【问题标题】:How to group dataframe rows into a list? [duplicate]如何将数据框行分组到列表中? [复制]
【发布时间】:2020-06-20 21:22:55
【问题描述】:

我有一个数据框 df:

a b
A 1
A 2
A 5
B 5
B 4
C 6

我想按第一列分组并将第二列作为行中的列表:

a b
A [1,2,5]
B [5,4]
C [6]

是否可以在 R 中使用 groupby 做到这一点?

【问题讨论】:

    标签: r list group-by


    【解决方案1】:

    如果我们想创建一个list 列,请在aggregate 中的base R 中按“a”分组后使用I

    aggregate(b ~ a, df, FUN = I)
    

    如果是字符串,则paste'b'的元素

    aggregate(b ~ a, df, FUN = toString)
    

    如果需要以特定格式为pasted,即[1, 2, 5]

    aggregate(b ~ a, FUN = function(x) sprintf("[%s]", toString(x)))
    

    有了dplyr,我们可以做到

    library(dplyr)
    df %>%
      group_by(a) %>%
      summarise(b = list(b))
    

    【讨论】:

      【解决方案2】:

      你也可以使用paste0:

      aggregate(b ~ a, df, function(x) paste0("[", paste(x, collapse = ","),"]", collapse = ""))
        a       b
      1 A [1,2,5]
      2 B   [5,4]
      3 C     [6]
      

      【讨论】:

        猜你喜欢
        • 2014-04-08
        • 2018-02-19
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多