亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

R中的條件合并/替換

R中的條件合并/替換

達令說 2019-08-19 16:52:42
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更好地擴展。


查看完整回答
反對 回復 2019-08-19
  • 3 回答
  • 0 關注
  • 890 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號