计算唯一组合并在新列中汇总其他列
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
我有一个包含四列的数据 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