如何从一个R数据表到另一个R数据表的匹配值列

时间:2015-12-08 22:49:34

标签: r data.table

我已经看过其他类似的解决方案:How to copy specific values from one data column to another while matching other columns in R?,但它并不是我真正需要的。我知道我可以用for循环做所有事情,但我有几个类似的大型数据集,我知道找到一种单线解决方案,它会更有效率。

例如,我有两个数据表:

df1 <- data.frame(ID=c(1,1,1,1,2,2,2), CODE=c("cd1", "cd2", "cd3", "cd4", "cd2", "cd3", "cd4"), FREQ=c(2,3,1,2,1,2,3))
df2 <- data.frame(CODE=c("cd1", "cd2", "cd3", "cd4"), DESCRIPTION=c("code1", "code2", "code3", "code4"))

dt1 <- data.table(df1)
dt2 <- data.table(df2)

我尝试做的是将列描述添加到第一个数据表,其中dt2的匹配值。

我已尝试过匹配,其中包括:

dt1[,DESCRIPTION:=dt2$DESCRIPTION[which(dt1$CODE==dt2$CODE)], by:=.(ID,CODE)]

但是我收到了警告并且没有真正起作用......我必须这么简单,我能看到它......关于如何做的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用合并功能查找匹配的值。

dt1 = merge(dt1,dt2,by="CODE")