我有两个数据:
df1:
k1 k2 k3 k4
1 Alfred Hitchcock 0
2 Claude Renoir 0
3 Jean Renoir 0
4 Louis Mallet 0
5 Louis Jouvet 0
和df2:
k1 k2 k3
1 Paul Newman
2 Alfred Hitchcock
3 Ernst Jünger
我想找到一种方法来比较我的两个数据帧的k2和k3列。如果有一个重复的项目,相对于k2和k3,从df1到df2 (这里df1的第一个条目"Alfred"/"Hitchcock“与df2的第二个条目相匹配),我想更新k4。我希望得到这样的结果:
k1 k2 k3 k4
1 Alfred Hitchcock 1
2 Claude Renoir 0
3 Jean Renoir 0
4 Louis Mallet 0
5 Louis Jouvet 0
我考虑过使用简单的指令,比如:
df1$k4 [df1$k2 %in% df2$k2 & df1$k3 %in% df2$k3] <- 1
但这不管用。我还考虑过使用merge()指令,但它似乎无法帮助我(我并不特别需要合并我的数据框架)。
我想我可以用SQL来处理,但是R不能.我试过sqldf,但是它不适用于外部和完全连接。
P.S.:由于我的数据帧非常大,所以我尽量不使用循环。
发布于 2013-09-29 15:16:13
(1)尝试如下:
transform(df1, k4 = k4 + paste(k2, k3) %in% paste(df2$k2, df2$k3))
(2)或此:
library(sqldf)
sqldf("select df1.k1, k2, k3, k4 + (df2.k1 is not null) k4
from df1 left join df2
using (k2, k3)")
给予:
k1 k2 k3 k4
1 1 Alfred Hitchcock 1
2 2 Claude Renoir 0
3 3 Jean Renoir 0
4 4 Louis Mallet 0
5 5 Louis Jouvet 0
更新:添加了第二个解决方案。
https://stackoverflow.com/questions/19079315
复制相似问题