计算唯一组合并在新列中汇总其他列

Count unique combinations in and summarize other columns in new one

我有一个包含四列的数据 table:a、b、c、d 我想计算 a、b 和 c 的唯一组合,但也记录 d 的哪些值在新列的那个组合中。

一个data.table的例子:

a b c d
1a 1b 1c n1
1a 1b 1c n2
2a 2b 2c n1
2a 2b 2c n2
2a 2b 2c n3
2a 2b 2c n4

我采用唯一值并对它们进行计数:dt[,.N,by=.(a,b,c)] 我得到以下结果:

a   b   c   N
1a  1b  1c  2
2a  2b  2c  4

现在我想添加一个新列,其中包含列 d 中的值。但我不确定如何正确 .SD 来实现这一点:

示例输出:

a   b   c   N new_col
1a  1b  1c  2 n1,n2
2a  2b  2c  4 n1,n2,n3,n4

或者最好有 new_col 个项目列表。

我们可以使用 return 作为 list

library(data.table)
dt[, .(N = .N, new_col = .(d)), by = .(a, b, c)]
        a      b      c     N     new_col
   <char> <char> <char> <int>      <list>
1:     1a     1b     1c     2       n1,n2
2:     2a     2b     2c     4 n1,n2,n3,n4