【问题标题】:R data table group values into vector by groupR数据表将值分组为向量
【发布时间】:2021-08-27 06:00:29
【问题描述】:

我有如下数据表:

library(data.table)
dat = data.table(j = c(3,8,9,11,10,28, 5), gr = c(9,9,9,9,10,10, 10), day = c(1,1,2,2,1,1,2)) 
  > dat
    j gr day
1:  3  9   1
2:  8  9   1
3:  9  9   2
4: 11  9   2
5: 10 10   1
6: 28 10   1
7:  5 10   2

我希望为每个组(gr 列)和每一天创建一个 向量,其中包含 j 中的所有可用值。

我尝试了以下方法无济于事:

dat[, j[1:.N], by = .(gr, day )]
dat[, list(j[1:.N]), by = .(gr, day )]

这部分可行,但我需要做一些进一步的操作才能获得所需的结果:

dat[, list(list(Reduce(c, j, accumulate = T))), by = .(gr, day )]

我的理想结果如下:

> res_dat
   gr day all_values
1:  9   1        3,8
2:  9   2       9,11
3: 10   1      10,28
4: 10   2          5

我不希望这是一个字符串,我希望它是一个向量列表,所以这个答案data table string concatenation of SD columns for by group values 不适用。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    我们需要一个list 列。 .(list(data.table 中的简洁语法。

    dat[, .(j = .(j)), by = .(gr, day)]
    

    -输出

       gr day     j
    1:  9   1   3,8
    2:  9   2  9,11
    3: 10   1 10,28
    4: 10   2     5
    

    即也可以写成

    dat[, list(j = list(j)), .(gr, day)]
       gr day     j
    1:  9   1   3,8
    2:  9   2  9,11
    3: 10   1 10,28
    4: 10   2     5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2015-12-06
      相关资源
      最近更新 更多