首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用data.table对列进行计数和聚合/汇总

使用data.table对列进行计数和聚合/汇总
EN

Stack Overflow用户
提问于 2015-09-28 23:12:59
回答 1查看 55K关注 0票数 38

我想对data.table中的列进行计数和聚合(求和),但是找不到最有效的方法。这似乎接近我想要的R summarizing multiple columns with data.table

我的数据:

代码语言:javascript
复制
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

我想通过MNTH使用data.table对VAR进行计数和求和。想要的结果:

代码语言:javascript
复制
    MNTH COUNT VAR
1 201501     4   2
2 201502     3   0
3 201503     5   2
4 201504     4   2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-28 23:15:17

您所指的帖子给出了如何将一个聚合方法应用于多个列的方法。如果要对不同的列应用不同的聚合方法,可以执行以下操作:

代码语言:javascript
复制
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

您还可以通过引用更新数据集来将这些值添加到现有数据集中:

代码语言:javascript
复制
dat[, `:=` (count = .N, var = sum(VAR)), by = MNTH]

这将导致:

月度变量计数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 52 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

有关如何使用data.table语法的更多信息,请参阅GitHub维基上的。

票数 57
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32826352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档