【发布时间】:2020-05-07 13:09:40
【问题描述】:
假设我需要根据同一行中的其他列以及同一列但前一行的值计算累积值。示例:根据时间间隔获取累计时间。
> 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 迭代的情况下使用单个命令来执行此操作?
【问题讨论】:
-
这不就是
cumsum(data$interval)吗?
标签: r