使用data.table统计和聚合/汇总一列
Use data.table to count and aggregate / summarize a column
我想对 data.table
中的列进行计数和聚合(求和),但找不到执行此操作的最有效方法。这似乎接近我想要的 R summarizing multiple columns with data.table.
我的数据:
set.seed(321)
dat <- data.table(MNTH = c(rep(201501,4), rep(201502,3), rep(201503,5), rep(201504,4)),
VAR = sample(c(0,1), 16, replace=T))
> dat
MNTH VAR
1: 201501 1
2: 201501 1
3: 201501 0
4: 201501 0
5: 201502 0
6: 201502 0
7: 201502 0
8: 201503 0
9: 201503 0
10: 201503 1
11: 201503 1
12: 201503 0
13: 201504 1
14: 201504 0
15: 201504 1
16: 201504 0
我想用 data.table 计算 VAR
和 MNTH
的总和。期望的结果:
MNTH COUNT VAR
1 201501 4 2
2 201502 3 0
3 201503 5 2
4 201504 4 2
您所指的 post 提供了一种方法,说明如何将一种聚合方法应用于多个列。如果你想对不同的列应用不同的聚合方法,你可以这样做:
dat[, .(count = .N, var = sum(VAR)), by = MNTH]
这导致:
MNTH count var
1: 201501 4 2
2: 201502 3 0
3: 201503 5 2
4: 201504 4 2
您还可以通过引用更新数据集,将这些值添加到现有数据集中:
dat[, `:=` (count = .N, var = sum(VAR)), by = MNTH]
这导致:
> dat
MNTH VAR count var
1: 201501 1 4 2
2: 201501 1 4 2
3: 201501 0 4 2
4: 201501 0 4 2
5: 201502 0 3 0
6: 201502 0 3 0
7: 201502 0 3 0
8: 201503 0 5 2
9: 201503 0 5 2
10: 201503 1 5 2
11: 201503 1 5 2
12: 201503 0 5 2
13: 201504 1 4 2
14: 201504 0 4 2
15: 201504 1 4 2
16: 201504 0 4 2
在 GitHub wiki 上进一步阅读如何使用 data.table syntax, see the Getting started guides。
我想对 data.table
中的列进行计数和聚合(求和),但找不到执行此操作的最有效方法。这似乎接近我想要的 R summarizing multiple columns with data.table.
我的数据:
set.seed(321)
dat <- data.table(MNTH = c(rep(201501,4), rep(201502,3), rep(201503,5), rep(201504,4)),
VAR = sample(c(0,1), 16, replace=T))
> dat
MNTH VAR
1: 201501 1
2: 201501 1
3: 201501 0
4: 201501 0
5: 201502 0
6: 201502 0
7: 201502 0
8: 201503 0
9: 201503 0
10: 201503 1
11: 201503 1
12: 201503 0
13: 201504 1
14: 201504 0
15: 201504 1
16: 201504 0
我想用 data.table 计算 VAR
和 MNTH
的总和。期望的结果:
MNTH COUNT VAR
1 201501 4 2
2 201502 3 0
3 201503 5 2
4 201504 4 2
您所指的 post 提供了一种方法,说明如何将一种聚合方法应用于多个列。如果你想对不同的列应用不同的聚合方法,你可以这样做:
dat[, .(count = .N, var = sum(VAR)), by = MNTH]
这导致:
MNTH count var 1: 201501 4 2 2: 201502 3 0 3: 201503 5 2 4: 201504 4 2
您还可以通过引用更新数据集,将这些值添加到现有数据集中:
dat[, `:=` (count = .N, var = sum(VAR)), by = MNTH]
这导致:
> dat MNTH VAR count var 1: 201501 1 4 2 2: 201501 1 4 2 3: 201501 0 4 2 4: 201501 0 4 2 5: 201502 0 3 0 6: 201502 0 3 0 7: 201502 0 3 0 8: 201503 0 5 2 9: 201503 0 5 2 10: 201503 1 5 2 11: 201503 1 5 2 12: 201503 0 5 2 13: 201504 1 4 2 14: 201504 0 4 2 15: 201504 1 4 2 16: 201504 0 4 2
在 GitHub wiki 上进一步阅读如何使用 data.table syntax, see the Getting started guides。