【发布时间】:2015-03-31 19:54:55
【问题描述】:
我想合并以下数据表
dt1 <- data.table(id = letters[1:5], day = 1, var1 = c(2,5,8,7,9), var2 = c(5,5,8,6,7), key = "id")
dt2 <- data.table(id = letters[3:7], day = 2, var1 = c(1,7,6,6,3), var2 = c(2,3,3,2,1), key = "id")
结果应该包括每个 id 的每一天。不幸的是,有些 ID 在几天内都不存在。
id day var1 var2
a 1 2 5
a 2 NA NA
b 1 5 5
b 2 NA NA
c 1 8 8
c 2 1 2
d 1 7 6
d 2 7 3
我尝试将id 和day 设置为DT 的键。通过以下几行,我无法为id 获得day 2,因为它实际上丢失了,并且变量加倍(var1.x var1.y)
merge(dt1, dt2, by= c("id","day"), all=TRUE)
merge(dt1, dt2, by= c("day","id"), all=TRUE)
allow.cartesian 也不起作用。有人对如何获得我需要的决赛桌有任何想法/评论吗?
【问题讨论】:
-
您确定您不想简单地合并行吗?试试
rbindlist(list(dt1, dt2))是否符合您的要求。
标签: r join merge data.table