我想基于另一个数据帧中的列替换df中的某些列值 这是第一个df的负责人:
df1
A tibble: 253 x 2
id sum_correct
<int> <dbl>
1 866093 77
2 866097 95
3 866101 37
4 866102 65
5 866103 16
6 866104 72
7 866105 99
8 866106 90
9 866108 74
10 866109 92
和一些sum_correct需要使用ID触发替换的另一个df中的正确值替换
df 2
A tibble: 14 x 2
id sum_correct
<int> <dbl>
1 866103 61
2 866124 79
3 866152 85
4 867101 24
5 867140 76
6 867146 51
7 867152 56
8 867200 50
9 867209 97
10 879657 56
11 879680 61
12 879683 58
13 879693 77
14 881451 57
我如何在R Studio中实现这一目标?我在这里先向您的帮助表示感谢。
答案 0 :(得分:2)
您可以使用match
进行 update join 来查找id
匹配的位置,并用NA
删除不匹配的内容(which
):< / p>
idx <- match(df1$id, df2$id)
idxn <- which(!is.na(idx))
df1$sum_correct[idxn] <- df2$sum_correct[idx[idxn]]
df1
id sum_correct
1 866093 77
2 866097 95
3 866101 37
4 866102 65
5 866103 61
6 866104 72
7 866105 99
8 866106 90
9 866108 74
10 866109 92
答案 1 :(得分:1)
您可以先进行left_join
,然后再使用coalesce
:
library(dplyr)
left_join(df1, df2, by = "id", suffix = c("_1", "_2")) %>%
mutate(sum_correct_final = coalesce(sum_correct_2, sum_correct_1))
新列sum_correct_final
中包含df2
中的值(如果存在),如果df1
中的相应条目不存在,则包含df2
中的值。