我有以下数据框:
library(dplyr)
old_data = data.frame(id = c(1,2,3), var1 = c(11,12,13))
> old_data
id var1
1 1 11
2 2 12
3 3 13
我想用“new_data”中的数据替换“old_data”第二行中的值(即,id 变量匹配的“old_data”中的行):
new_data = data.frame(id = c(4,2,5), var1 = c(11,15,13))
> new_data
id var1
1 4 11
2 2 15
3 5 13
使用此处找到的答案 ( Update rows of data frame in R ),我尝试使用“dplyr”库执行此操作:
update = old_data %>%
rows_update(new_data, by = "id")
但这给了我以下错误:
Error: Attempting to update missing rows.
Run `rlang::last_error()` to see where the error occurred.
这就是我想要得到的:
id var1
1 1 11
2 2 15
3 3 13
有人可以告诉我我做错了什么吗?
谢谢!
最佳答案
有点乱,但这有效(至少在这个样本数据上)
old_data %>%
left_join(new_data,by="id") %>%
mutate(var1 = if_else(!is.na(var1.y),var1.y,var1.x)) %>%
select(id,var1)
# id var1
#1 1 11
#2 2 15
#3 3 13
关于r - 使用旧数据更新新数据中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70515105/