【问题标题】:how to merge two dataframes in r with NAs present in common column in it in r [duplicate]如何将r中的两个数据帧与r中的公共列中存在的NA合并[重复]
【发布时间】:2020-08-24 05:28:46
【问题描述】:

我有一个主数据集看起来像

A1       B1         V1
1100    10129       45
NA      1012        65
NA      101         47
NA      10132       36
1101    10133       425
36475   NA          74
54757   NA          85
1102    10136       NA

这里是我需要使用两个主 ID(A1 和 B1)从 V1 更新 V2 列的辅助表

A2        B2    V2
1100     10129  
NA       1012   
NA       10132  
36475    NA 
54757    NA 
1102     10136  

预期输出:

    A2       B2     V2
   1100     10129   45
   NA       1012    65
   NA       10132   36
   36475    NA      74
   54757    NA      85
   1102     10136   NA

请提出符合条件的代码

提前致谢

【问题讨论】:

  • 在基础 R 中:merge(df1, df2, by.x = c('A1', 'B1'), by.y = c('A2', 'B2'))

标签: r dplyr merge


【解决方案1】:

我认为你只需要做一个inner_join 就足够了。

library(dplyr)

primary_df <- data.frame(
  A1 = c(1100, NA, NA, NA, 1101, 36475, 54757, 1102),
  B1= c(10129, 1012, 101, 10132, 10133, NA, NA, 10136),
  V1 = c(45, 65, 47, 36, 425, 74, 85, NA)
)

secondary_df <- data.frame(
  A2 = c(1100, NA, NA, 36475, 54757, 1102),
  B2 = c(10129, 1012, 10132, NA, NA, 10136)
)

inner_join(primary_df, secondary_df, by=c("A1"="A2", "B1"="B2"))

输出

> inner_join(primary_df, secondary_df, by=c("A1"="A2", "B1"="B2"))
     A1    B1 V1
1  1100 10129 45
2    NA  1012 65
3    NA 10132 36
4 36475    NA 74
5 54757    NA 85
6  1102 10136 NA

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2022-11-28
    • 2017-09-26
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多