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包,我相信它包含对此的解决方案,但我还没有找到)
感谢您的帮助!
我们可以使用
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 |
或使用
1 2 | library(data.table) setDT(df)[, list(b= toString(b)), a] |