【发布时间】:2017-06-20 14:25:22
【问题描述】:
我不明白为什么在这个连接中我无法检索到我的 DT2 的 sub_item 列?
DT <- data.table(ID=c(1:4),OBS_VALUE=10:13)
DT2 <- data.table(ID=c(1:4),sum_item=c(10,11.5,12.5,18))
setkey(DT,ID)
setkey(DT2,ID)
S_toset_sum <- DT[DT2,diff := abs(OBS_VALUE-sum_item)][diff<3]
在输出中我想保留 sum_item,因为我想保留此列而不是 OBS_VALUE 列。
【问题讨论】:
-
sum_item属于DT2,而您使用DT+ 您创建的新列(diff),为什么sum_item会在那里? -
在 j 参数中返回一个列表,其中包含要返回的变量。例如,
DT[DT2, on="ID", .(sum_item, diff = abs(OBS_VALUE-sum_item))][diff<3]。 -
也许是一种更类似于 data.table 的方式:
DT[DT2, `:=` (sum_item = i.sum_item, diff = abs(OBS_VALUE-sum_item))][diff<3] -
如果您的两个表具有相同的键(从某种意义上说,有一个 ID == 1,一个 ID == 2 等),不清楚为什么它们一开始是分开的......
-
弗兰克,我认为在不了解这些表有多大、值实际代表什么、如何创建表等的情况下这么说是一件很奇怪的事情。当然,如果所有这些表都更好数据驻留在一个巨大的巨型表中,但这并不总是实用的。
标签: r join data.table