使用group by将多列值设置为一行

时间:2017-03-14 03:15:37

标签: r data.table

我正在使用data.table包来加速数据集上的一些摘要统计收集。

我很好奇是否有一种方法可以按多列分组。我的数据如下:

Date                      Value  
2016-12-11                 36
2016-12-11                 40
2016-12-12                 17
2016-12-12                 41
2016-12-12                 27
...
2017-2-21                  22
2017-2-21                  53
2017-2-21                  19
2017-2-21                  20
2017-2-21                  32

我可以获得这样的数据:

Date                              Value
2016-12-11                      c(36, 40)
2016-12-12                      c(17, 27, 41)
2016-2-21                       c(19, 20, 22, 32, 53)

注意:

每个日期行号不相等。这让我发疯了。

1 个答案:

答案 0 :(得分:3)

我们可以通过操作来创建字符串连接

library(data.table)
setDT(df1)[, .(Value = toString(Value)), by = Date]

或创建'价值'列作为列表

setDT(df1)[,  list(Value = list(Value)), by = Date]