如何使用另一个dataframe的信息更新当前dataframe的指定列值
R实现DataFrame按匹配ID更新指定字段
基础R实现(无需加载第三方包)
直接通过match函数匹配Bird_ID的位置,对对应位置的Sex字段赋值即可:
# 匹配df2的Bird_ID在df1中的位置,直接更新对应Sex值 df1$Sex[match(df2$Bird_ID, df1$Bird_ID)] <- df2$Seen_sex
运行后df1的输出结果为:
Bird_ID Sex 1 1 Male 2 2 Female 3 3 Male 4 4 Male 5 5 Male 6 6 Female
dplyr实现(适合批量更新场景)
如果你已经在使用tidyverse生态,用rows_update函数实现更规范,就算df2包含多条待更新记录也能直接批量处理:
library(dplyr) df1 <- df1 %>% # 先把df2的Seen_sex列名改成和df1要更新的列名一致,再按Bird_ID匹配更新 rows_update(df2 %>% rename(Sex = Seen_sex), by = "Bird_ID")
注意:如果df2中存在df1没有的Bird_ID,
rows_update会默认抛出错误,避免非法数据插入,符合主数据更新的安全要求。
内容的提问来源于stack exchange,提问作者Andre230
相关产品推荐
相关产品推荐

