带数据帧:

df <- data.frame(id = rep(1:3, each = 5)
                 , hour = rep(1:5, 3)
                 , value = sample(1:15))

我想添加一个与id匹配的累积和列:

df
   id hour value csum
1   1    1     7    7
2   1    2     9   16
3   1    3    15   31
4   1    4    11   42
5   1    5    14   56
6   2    1    10   10
7   2    2     2   12
8   2    3     5   17
9   2    4     6   23
10  2    5     4   27
11  3    1     1    1
12  3    2    13   14
13  3    3     8   22
14  3    4     3   25
15  3    5    12   37

我怎样才能有效地做到这一点?谢谢

推荐答案

df$csum <- ave(df$value, df$id, FUN=cumsum)

ave是"go to"函数,如果你想要一个与现有向量长度相等的分组向量,那么它可以单独从这些子向量中计算出来.如果需要基于多个"并行"值进行分组处理,基本策略是do.call(rbind, by(dfrm, grp, FUN)).

R相关问答推荐

如何正确使用' programme::programme_bar$Message()'?

R:将列名的字符载体传递给可以 Select 接受多个参数的函数

Facet_wrap具有不同bin宽度值的图表

使用gsim删除特殊词

R数据帧中的布尔加法会产生布尔值而不是整值

棒棒糖图表大小和线宽参数故障标签未出现

Select 与特定列中最大值对应的数据帧行

如何将多个数据帧附加到R中的多个相应的CSV文件中?

根据固定值范围在tible中添加新行

查找满足SpatRaster中条件的单元格位置

R创建一个数据透视表,计算多个组的百分比

使用gggrassure减少地块之间的空间

RStudio中相关数据的分组箱形图

如何在格子中添加双曲曲线

当我们有多个特殊字符时,使用gsub删除名称和代码'

一小时满足条件的日期的 Select

如何在R中描绘#符号?

汇总数据帧中的复制列,保持行的唯一性

将文本批注减少到gglot的y轴上的单个值

如何获取R chromote中的当前URL?