我想对data.tables执行一个操作,我目前可以成功地使用data.frames。本质上,它是两个data.frames的合并函数,它找到df2中与df1最接近的匹配,用于许多匹配变量之一。此代码如下。
我想在data.tables中执行此操作,因为我的data.frames非常大,如果我尝试在完整数据上完成此操作,我的当前设置会崩溃。 Data.table,可能允许我在完整集上完成它,但如果没有,我发现data.table在使用多个数据子集时更容易使用。
我正在寻找来自df2的Id
(及其相应的value
),其与df1中State
s value
的最接近匹配变量{{ 1}}和MM
(在此data.frame方法中,如果存在最接近的匹配关系,则可能发生多个配对(例如,存在加1和减1的值))。使用data.frames时,我得到的解决方案为variable
。我不知道如何设置data.table给我相同的结果。我试过我的钥匙的变化,下面是一个例子。在我在代码中引用的data.frame问题中有一个answer使用data.table,但是,我无法使用它来处理我的示例数据。
final
答案 0 :(得分:3)
不确定这是否是实现您想要的最佳方式,但这里有一种类似于数据帧的方法,只使用data.tables:
dt1 <- data.table(df1)
dt2 <- data.table(df2)
res <- merge(dt1, dt2, by = c("MM", "variable"), all.x = TRUE, allow.cartesian=TRUE)
final_dt <- res[, .SD[abs(value.x - value.y) == min(abs(value.x - value.y))], by=c("State", "MM", "variable")]
请注意,final_dt
中的结果与final
中的结果(状态= AK,MM = 3,变量= TMX)不同,即使根据上述方法,您的方法也不会返回匹配在你的描述中,应该返回一个匹配。