【发布时间】:2019-02-04 13:32:37
【问题描述】:
我有一个 250k 观察值的主 df,我想向其中添加一组变量,由于 left_join/merge 函数的限制,我必须以较小的 dfs(每个 50k 观察值的 5 个不同 dfs)计算这些变量行大小(2^31-1 个观察值)。
我现在尝试在主 df 和 5 个较小的 df 上使用 left_join 或 merge-functions 将新变量的列添加到主 df,以便在每个步骤中进行 50k 次观察。
mainFrame <- left_join(mainFrame, newVariablesFirstSubsample)
mainFrame <- left_join(mainFrame, newVariablesSecondSubsample)
mainFrame <- left_join(mainFrame, newVariablesThirdSubsample)
mainFrame <- left_join(mainFrame, newVariablesFourthSubsample)
mainFrame <- left_join(mainFrame, newVariablesFifthSubsample)
在第一个 left_join(包括前 50k 个观察值的新变量值)之后,当我运行第二个到第五个 left_joins 时,R 似乎不包含以下 50k 个观察值组的任何值。我通过在每个 left_join 之后为各个列构建汇总统计数据得出这个结论。
知道我做错了什么或可能使用哪些其他功能吗?
【问题讨论】:
-
您好,您是否尝试过使用
data.table?我不记得有 2^31-1 观察的限制 -
我没有 - 使用 data.table 将如何工作?
-
与
merge:merge(dt1, dt2, by.x=c("X","Y"), by.x=c("Z","K"), all.x=T, all,y=F)的左连接相同。你可以先把你的数据框变成数据表:mainFrame <- as.data.table(mainFrame) -
它只是给了我错误:as.vector(x, mode) 中的错误:无法将“内置”类型强制转换为“任何”类型的向量
-
如果每次加入后行数都在增加,这意味着你加入的任何列都不是唯一的——这可能很糟糕。