【发布时间】:2020-08-20 17:44:21
【问题描述】:
我有两个不同长度的数据框 df1 和 df2 以及两列作为关键列。我想对这些数据帧执行多个操作,如下所示:
- 根据键列将 df1 中的空白 (NA) 单元格替换为 df2 中的相应值
- 对于每个键列对,两个数据帧中值相互矛盾的单元格应在新数据帧中报告
df1
id_col1 id_col2 name age sex
---------------------------------------
101 1M 21
101 3M 21 M
102 1M Mark 25
df2
id_col1 id_col2 name age sex
-------------------------------------------
101 1M Steve M
101 2M M
101 3M Steve 25
102 1M Ria 25 M
102 2M Anie 22 F
执行操作 1 后,即将 df1 中的 NA 替换为 df2 中的相应值,我应该得到以下结果:
结果_1
id_col1 id_col2 name age sex
-------------------------------------------
101 1M Steve 21 M
101 3M Steve 25 M
102 1M Mark 25 M
执行操作 2 后,即 df1 和 df2 中相同键列的单元格冲突,我应该得到以下信息:
结果_2
id_col1 id_col2 name age sex
-------------------------------------------
101 3M 21
101 3M 25
102 1M Mark
102 1M Ria
谁能帮忙解决这些问题?
【问题讨论】:
-
试试
left_join(df1, select(df2, -age), by = c('id_col1', 'id_col2')) %>% mutate(name = coalesce(name.x, name.y), sex = coalesce(sex.x, sex.y))) %>% select(names(df1)) -
result2 可能是
anti_join