假设我需要基于同一行中的其他列以及来自同一列但上一行的值来计算累积值。示例:根据时间间隔获取累积时间。
> 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
迭代的情况下执行此操作?
答案 0 :(得分:0)
如罗纳克所说,如果您想使用dplyr进行此操作:
library(dplyr)
data <- data %>%
mutate(time = cumsum(interval))
答案 1 :(得分:0)
也许您正在寻找的是cumsum():
library(tidyverse)
data <- data %>%
mutate(time = cumsum(interval))