![](/img/trans.png)
[英]Replace values of a column based on another column having as input a dataframe
[英]Replace column values based on column in another dataframe
我想根据另一个数据框中的列替换 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 需要用另一个 df 中的正确值替换,使用 id 触发替换
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 中实现这一目标? 我在这里先向您的帮助表示感谢。
您可以更新加入使用match
以找到id
匹配和去除不匹配( NA
)与which
:
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
你可以做一个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
不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.