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 關注
- 890 瀏覽
添加回答
舉報
0/150
提交
取消