【发布时间】:2015-12-08 22:49:33
【问题描述】:
我已经看过类似这样的其他解决方案: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)
我想要做的是将列DESCRIPTION添加到第一个数据表中,并具有来自dt2的匹配值。
我尝试过 match 和 which,像这样:
dt1[,DESCRIPTION:=dt2$DESCRIPTION[which(dt1$CODE==dt2$CODE)], by:=.(ID,CODE)]
但是我收到警告并且实际上不起作用...这一定是一件我看不到它的简单事情...关于如何做到这一点的任何想法?
【问题讨论】:
-
df3<-merge(df1,df2,by='CODE') -
你为
data.table使用了不正确的标签 -
试试
dt1[dt2, DESCRIPTION := i.DESCRIPTION, on = "CODE"]。你真的需要通过小插曲 -
有人可以回答这个问题,不要让它处于当前状态。也允许自我回答。
-
谢谢,我认为它会很简单,但从来没有(我感到羞耻!)之前使用过合并...另外,我确实尝试找到正确的标签,对此感到抱歉。我确实在这里查看了小插曲:cran.r-project.org/web/packages/data.table,但找不到任何适合我的案例。 @DavidArenburg,你会建议我在哪里寻找 data.table 的未来工作?我查看了教程,但没有找到任何解决从其他表中获取值的方法......谢谢!
标签: r data.table