r - 如何在R中按组获取累计和?

标签 r

假设我有一个数据框,如下所示:

df<-data.frame(id=1:8,group=c(1,0,0,1,1,0,1,0),rep=c(rep("d1",4),rep("d2",4)),value=rbinom(8,1,0.6))
df
  id group rep value
1  1     1  d1     0
2  2     0  d1     0
3  3     0  d1     0
4  4     1  d1     1
5  5     1  d2     1
6  6     0  d2     0
7  7     1  d2     1
8  8     0  d2     1

什么是通过grouprep获得累积总和的最佳方法是:
cumsum
group d1  d1+d2  d1+d2+d3
0     0     1      ...
1     1     3      ...

最佳答案

library(data.table)

# convert to data.table in place
setDT(df)

# dcast and do individual sums
dt.cast = dcast.data.table(df, group ~ rep, value.var = 'value',
                           fun.aggregate = sum)
dt.cast
#   group d1 d2
#1:     0  0  1
#2:     1  1  2

# cumsum
dt.cast[, as.list(cumsum(unlist(.SD))), by = group]
#   group d1 d2
#1:     0  0  1
#2:     1  1  3

关于r - 如何在R中按组获取累计和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23019460/

相关文章:

r - 在保留类(class)日期的同时将日期格式化为月-年

mysql - 合并多个数据帧并根据每个 df 时间戳对它们进行排序

r - 如何以更智能的方式从矩阵中删除特定的行和列?

r - dplyr:通过多个重叠的组结构进行汇总并加入

r - 计算美国各州名称在字符串列中被提及的次数 - 为所有州创建 51 个新列

R数据表: Why are values of concatenated list lost?

c++ - 如何使用 RcppArmadillo 找到一个 vector 中元素的索引,这些元素也在另一个 vector 中?

r - 如何使用 dplyr 按因子操作 data.frame

r - 如何在宽格式的data.frame上运行ANOVA?

删除绘制数据和轴之间的空间