关于r:汇总数据帧中的多行以列出

aggregate multiple rows in dataframe to list

本问题已经有最佳答案,请猛点这里访问。

我正在尝试将数据框中的多行数据转换为列表(或类似结构)。

我的数据如下:

1
2
3
4
5
6
7
8
data.frame("a"=c(1,1,2,3,3,3),"b"=c("x","y","x","x","y","z"))
  a b
1 1 x
2 1 y
3 2 x
4 3 x
5 3 y
6 3 z

,我正在寻找的结果是这样的:

1
2
3
4
  a       b
1 1    x, y
2 2       x
3 3 x, y, z

我可以通过遍历数据框的所有行并附加到单个列表来低效率地执行此操作,但是我想看看是否有更好的方法可以做到这一点(我目前正在研究data.table包,我相信它包含对此的解决方案,但我还没有找到)

感谢您的帮助!


我们可以使用aggregate

1
2
3
4
5
aggregate(b~a, df, FUN=toString)
#  a       b
#1 1    x, y
#2 2       x
#3 3 x, y, z

或使用data.table,我们将\\'data.frame \\'转换为\\'data.table \\'(setDT(df)),按\\'a \\'分组,paste \\'b的元素\\'在一起(toStringpaste(..., collapse=",")的package器)

1
2
library(data.table)
setDT(df)[, list(b= toString(b)), a]