【问题标题】:Merge datasets in R在 R 中合并数据集
【发布时间】:2020-12-06 22:43:08
【问题描述】:

感谢您在这方面的帮助。我正在尝试合并两个数据集。 Dataset1 有 12 个观测值(一年中的每个月都有一个观测值)。 Dataset2 有 14 个观测值。关键变量是月份。 Dataset2 中的 2 个额外观察对应于 6 月的 2 个额外行。所以,在合并的数据集中,我得到了六月的三行。问题是合并的数据集将 Dataset1 中的信息复制到另外两行。我需要另外两行是 NA(如图所示)。我尝试使用合并和连接功能,并且都复制数据。你能告诉我如何解决这个问题吗?

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。数据图片没有帮助,因为我们无法将数据复制/粘贴到 R 中。大多数合并问题选项已在此处解决:stackoverflow.com/questions/1299871/…

标签: r join merge dataset


【解决方案1】:

您所要求的内容与加入/合并操作应该做的具体和根本相反,因此它不会在 merge(...) 内发生。但是,您可以在事后实现。

dat1 <- data.frame(Key = c("January", "June"), Seller1 = c(500, 1000))
dat2 <- data.frame(Key = c("January", "June", "June", "June"), Seller2 = c(800, 2000, 1000, 2000))

merged <- merge(dat1, dat2, by = "Key", all = TRUE)
merged[,names(dat1)]
#       Key Seller1
# 1 January     500
# 2    June    1000
# 3    June    1000
# 4    June    1000
duplicated(merged[,names(dat1)])
# [1] FALSE FALSE  TRUE  TRUE
merged[duplicated(merged[,names(dat1)]), "Seller1"] <- NA
merged
#       Key Seller1 Seller2
# 1 January     500     800
# 2    June    1000    2000
# 3    June      NA    1000
# 4    June      NA    2000

【讨论】:

    【解决方案2】:

    我们也可以使用full_join

    library(dplyr)
    full_join(df1, df2, by = 'Key') %>%
              mutate(Seller1 = replace(Seller1, duplciated(Seller1), NA))
    

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 1970-01-01
      • 2021-11-09
      • 2019-03-30
      • 2021-08-10
      • 2012-06-18
      • 2022-08-18
      相关资源
      最近更新 更多