R数据table将值按组分组到向量中
R data table group values into vector by group
我有以下数据table:
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 列)和日期创建一个 vector,其中包含 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
我不希望这是一个字符串,我希望它是一个向量列表所以这个答案不适用。
我们需要 list
列。 .(
是 data.table
.
中 list(
的简洁语法
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
我有以下数据table:
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 列)和日期创建一个 vector,其中包含 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
我不希望这是一个字符串,我希望它是一个向量列表所以这个答案
我们需要 list
列。 .(
是 data.table
.
list(
的简洁语法
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