首页 > 解决方案 > 如何将数据框行分组到列表中?

问题描述

我有一个数据框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]

是否可以使用 groupby 在 R 中执行此操作?

标签: rlistgroup-by

解决方案


如果我们想在按 'a' 分组后创建一个list列使用fromIaggregatebase R

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

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

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

如果它需要以paste特定格式表示,即[1, 2, 5]

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

dplyr我们可以做

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

推荐阅读