繁体   English   中英

根据另一个数据框中的列替换列值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM