【问题标题】:R: Merging data by row if several columns are equal [duplicate]R:如果几列相等,则按行合并数据[重复]
【发布时间】:2018-08-09 10:16:45
【问题描述】:

我有一个如下所示的 data.frame:

table <- read.table(textConnection("W\tX\tY\tZ
                               A\t2\t3\t4
                               A\t2\t3\t6
                               A\t1\t2\t3
                               C\t3\t2\t1
                               B\t1\t3\t4
                               B\t1\t2\t2"),header=T)

我想合并第 1 列到第 3 列 (W,X,Y) 相等的行,然后保留第 4 列 (Z) 的所有值。结果应如下所示:

W     X     Y    Z
A     2     3    4,6
A     1     2    3
C     3     2    1
B     1     3    4
B     1     2    2

你看,前两列合并了,其余的没有。

【问题讨论】:

  • aggregate(df$Z, list(df$W, df$X, df$Y), paste)

标签: r merge row conditional-statements equals


【解决方案1】:

您可以使用dplyr 包对数据进行分组和汇总

library(dplyr)

group_by(table, W, X, Y) %>%
 summarise(Z=paste0(Z, collapse=','))

这个操作的结果和你想要的一样:

# A tibble: 5 x 4
# Groups:   W, X [?]
       W     X     Y     Z
  <fctr> <int> <int> <chr>
1      A     1     2     3
2      A     2     3   4,6
3      B     1     2     2
4      B     1     3     4
5      C     3     2     1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 2022-06-21
    • 2019-02-06
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    相关资源
    最近更新 更多