我想对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

我想用数据计算和求和VARMNTH.桌子期望的结果是:

    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]

这导致:

     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

For further reading about how to use syntax, see the Getting started guides on the GitHub wiki.

R相关问答推荐

使用na.locf在长格式数据集中输入具有多个时间点的数据集

使用lapply的重新定位功能

如何对数据集进行逆向工程?

编辑文件后编辑RhandsonTable

次级y轴R gggplot2

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

如何从R ggplot图片中获取SVG字符串?

计算数据帧中指定值之前的行数,仅基于每行之后的future 行,单位为r

使用RSelenium在R中抓取Reddit时捕获多个标签

根据列表中项目的名称合并数据框和列表

我如何go 掉盒子图底部的数字?

如果COLSUM为>;0,则COLNAME为向量

为什么在写入CSV文件时Purrr::Pwalk不起作用

解析嵌套程度极高的地理数据

自定义交互作用图的标签

如果满足条件,则替换列的前一个值和后续值

如何在R中创建这些列?

在不重复主题的情况下重新排列组

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

使用列名和r中的前缀 Select 列的CREATE函数