如果我有一个data.frame(df1)如下:
Name Count
a 1
b 2
c 3
和另一个data.frame(df2)像:
Name Count
aa 0
ba 0
ca 0
b 0
a 0
c 0
我想在df2中获取与df1相对应的值,其中名称匹配。我目前正在尝试:
idx = which(df2$Name %in% df1$Name)
df2[idx,2] = df1$Count
这似乎交换或置换了一些存储的计数。什么是可以保留原始data.frame中的顺序的方法?
您可以使用match
获取替换指数:
df2[match(df1$Name, df2$Name),]$Count <- df1$Count
至于为什么你的解决方案不起作用,比较输出:
which(df2$Name %in% df1$Name)
[1] 4 5 6
和
match(df1$Name, df2$Name)
[1] 5 4 6