簡體   English   中英

如果 data.table 中的選定行與另一個 data.table 中的值匹配,如何更新它們

[英]How to update selected rows in a data.table if they match value from another data.table

我想找到一個 data.table 解決方案,用於從另一個表中的值更新選定的行:

表 1 看起來像這樣

id  var grade
1   var1    X
2   var2    B
3   var3    X
4   var4    D
5   var5    X

表 2

id  var grade
1   var1    Y
2   var2    B2
3   var3    Y
4   var4    D2
5   var5    Y

更新后的表 1 如下所示

id  var grade
1   var1    Y
2   var2    B
3   var3    Y
4   var4    D
5   var5    Y

任何幫助深表感謝

我們可以只使用第二個數據集並刪除最后的數字

 df2$grade <- sub("\\d+$", "", df2$grade)

或者在data.table ,將第一個 data.frame 轉換為 'data.table',並將第二個數據集 'grade' 分配給 'grade',由 'id', 'var' 連接並刪除末尾的數字

library(data.table)
setDT(df1)[df2, grade := i.grade, on = .(id, var)][, grade := sub("\\d+$", "", grade][]

或者正如@IceCreamToucan 評論的那樣

setDT(df1)[df2, grade := sub("\\d+$", "", i.grade), on = .(id, var)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM