R中的条件合并/替换我有两个数据框:df1x1 x21 a2 b3 c4 d和df2x1 x22 zz3 qq我想根据df1 $ x1和df2 $ x2之间的条件匹配,用df2 $ x2中的值替换df1 $ x2中的某些值,以产生:df1x1 x21 a2 zz3 qq4 d
3 回答
互换的青春
TA贡献1797条经验 获得超6个赞
第一部分是好的,但是在非唯一值的情况下df1,行式for循环在大型data.frames上不能很好地扩展。
您可以使用data.table“更新连接”进行适当的修改,这将非常快:
library(data.table)
setDT(df1); setDT(df2)
df1[df2, on = .(x1), x2 := i.x2]
或者,假设您不关心维护行顺序,您可以使用SQL启发dplyr:
library(dplyr)
union_all(
inner_join( df1["x1"], df2 ), # x1 from df1 with matches in df2, x2 from df2
anti_join( df1, df2["x1"] ) # rows of df1 with no match in df2
) # %>% arrange(x1) # optional, won't maintain an arbitrary row order
这些中的任何一个都比行式for-loop更好地扩展。
- 3 回答
- 0 关注
- 840 浏览
添加回答
举报
0/150
提交
取消