基于上一行的列的累积值

时间:2019-06-20 00:47:45

标签: r

假设我需要基于同一行中的其他列以及来自同一列但上一行的值来计算累积值。示例:根据时间间隔获取累积时间。

> data <- data.frame(interval=runif(10),time=0)
> data
     interval time
1  0.95197753    0
2  0.73623490    0
3  0.63938696    0
4  0.32085833    0
5  0.92621764    0
6  0.02801951    0
7  0.09071334    0
8  0.60624511    0
9  0.35364178    0
10 0.79759991    0

我可以使用下面的(丑陋的)代码生成时间的累积值:

for( i in 1:nrow(data)){
    data[i,"time"] <- data[i,"interval"] + ifelse(i==1,0,data[i-1,"time"])
}

> data
     interval      time
1  0.95197753 0.9519775
2  0.73623490 1.6882124
3  0.63938696 2.3275994
4  0.32085833 2.6484577
5  0.92621764 3.5746754
6  0.02801951 3.6026949
7  0.09071334 3.6934082
8  0.60624511 4.2996533
9  0.35364178 4.6532951
10 0.79759991 5.4508950

是否可以使用单个命令在不进行for迭代的情况下执行此操作?

2 个答案:

答案 0 :(得分:0)

如罗纳克所说,如果您想使用dplyr进行此操作:

library(dplyr)
data <- data %>%
  mutate(time = cumsum(interval))

答案 1 :(得分:0)

也许您正在寻找的是cumsum():

library(tidyverse)
data <- data %>%
  mutate(time = cumsum(interval))
相关问题