【问题标题】:Merging Multiple (and different datasets)合并多个(和不同的数据集)
【发布时间】:2021-05-10 05:49:06
【问题描述】:

我想在 R 中合并多个(大约十个)数据集。相当多的数据集彼此不同,所以我不需要通过行名或任何东西来匹配它们。我只想将它们并排粘贴在单个数据框中,以便将它们导出到单个工作表中。例如,我有以下两个数据集:

Month Engagement Test
Jan 51 1
Feb 123 2
Variable Engagement
Hot 412
Cold 4124
Warm 4fd4

我只是想将它们并排(如左右)放在一个数据框中以用于导出目的,如下所示:

Month Engagement Test Variable Engagement
Jan 51 1 Hot 412
Feb 123 2 Cold 4124
NA NA NA Warm 4fd4

有没有办法做到这一点?这似乎是一个奇怪的要求,但如果我应该提供更多信息,请告诉我!非常感谢。

【问题讨论】:

标签: r dataframe merge


【解决方案1】:

将数据放入列表中。从列表中查找最大行数。对于每个数据帧子集的行,行数较少的数据帧将附加NA's。

data <- list(df1, df2)
n <- seq_len(max(sapply(data, nrow)))
result <- do.call(cbind, lapply(data, `[`, n, ))
result

#   Month Engagement Test Variable Engagement
#1    Jan         51    1      Hot        412
#2    Feb        123    2     Cold       4124
#NA  <NA>         NA   NA     Warm       4fd4

【讨论】:

    【解决方案2】:

    索引两个数据,然后按索引合并并删除索引:

    df1 <- read.csv("Book1.csv", header = TRUE, na.strings = "")
    df2 <- read.csv("Book2.csv", header = TRUE, na.strings = "")
    
    # Assign index to the dataframe
    rownames(df1) <- 1:nrow(df1)
    rownames(df2) <- 1:nrow(df2)
    
    # Merge by index:
    merged <- merge(df1, df2, by=0, all=TRUE) %>% 
      select(-1)
    merged
    

    输出:

      Month Engagement Test Variable Engagement
    1   Jan         51    1      Hot        412
    2   Feb        123    2     Cold       4124
    3  <NA>         NA   NA     Warm       4fd4
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 2023-04-08
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2021-05-12
      相关资源
      最近更新 更多