【问题标题】:Merging two dataframes by keeping certain column values in r通过在 r 中保留某些列值来合并两个数据帧
【发布时间】:2022-01-19 23:04:42
【问题描述】:

我有两个需要合并的数据框。第二个缺少某些列,并且还有更多ids。以下是示例数据集的外观。

df1 <- data.frame(id = c(1,2,3,4,5,6),
                   item = c(11,22,33,44,55,66),
                   score = c(1,0,1,1,1,0),
                   cat.a = c("A","B","C","D","E","F"),
                   cat.b = c("a","a","b","b","c","f"))

> df1
  id item score cat.a cat.b
1  1   11     1     A     a
2  2   22     0     B     a
3  3   33     1     C     b
4  4   44     1     D     b
5  5   55     1     E     c
6  6   66     0     F     f

df2 <- data.frame(id = c(1,2,3,4,5,6,7,8),
                  item = c(11,22,33,44,55,66,77,88),
                  score = c(1,0,1,1,1,0,1,1),
                  cat.a = c(NA,NA,NA,NA,NA,NA,NA,NA),
                  cat.b = c(NA,NA,NA,NA,NA,NA,NA,NA))

> df2
  id item score cat.a cat.b
1  1   11     1    NA    NA
2  2   22     0    NA    NA
3  3   33     1    NA    NA
4  4   44     1    NA    NA
5  5   55     1    NA    NA
6  6   66     0    NA    NA
7  7   77     1    NA    NA
8  8   88     1    NA    NA

两个数据集共享前 6 行,数据集 2 有另外两行。当我合并时,我需要保留第一个数据帧中的 cat.acat.b 信息。然后我还想保留id=7id=8 缺少cat.acat.b 列。

这是我想要的输出。

> df3
  id item score cat.a cat.b
1  1   11     1     A     a
2  2   22     0     B     a
3  3   33     1     C     b
4  4   44     1     D     b
5  5   55     1     E     c
6  6   66     0     F     f
7  7   77     1  <NA>  <NA>
8  8   88     1  <NA>  <NA>

有什么想法吗?

谢谢!

【问题讨论】:

    标签: r merge


    【解决方案1】:

    我们可能会使用rows_update

    library(dplyr)
    rows_update(df2, df1, by = c("id", "item", "score"))
    

    -输出

      id item score cat.a cat.b
    1  1   11     1     A     a
    2  2   22     0     B     a
    3  3   33     1     C     b
    4  4   44     1     D     b
    5  5   55     1     E     c
    6  6   66     0     F     f
    7  7   77     1  <NA>  <NA>
    8  8   88     1  <NA>  <NA>
    

    【讨论】:

    • 从来不知道我们有类似于 sql 的插入、更新和删除!这真太了不起了。谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-12-24
    • 2016-06-16
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2021-03-10
    相关资源
    最近更新 更多