所以,我绝对吮吸循环(如果你有任何推荐的文档来练习它,请告诉我)。但是,目前我想计算每个实例和之前实例的时间戳之间的时间差(对于几十万个实例)。为了说明(数据集“测试”):
car name timestamp
1 2015-05-03 21:15:00
1 2015-05-03 21:45:00
1 2015-05-03 22:30:00
2 2015-05-04 05:45:00
2 2015-05-04 16:45:00
时间戳采用POSIXct格式。我想要实现的是,循环计算每辆车与以前的实例之间的时差(以分钟为单位),只要它是同一辆车。所以,我想得到以下结果:
[1] N/A
[2] 30
[3] 45
[4] N/A
[5] 660
我设法计算两个实例之间的时间:
difftime(test$timestamp[3],test$timestamp[(3-1)],units="mins")
我开始将它放在一个循环中,如下所示:
for(i in test$timestamp){
minparked<-difftime(test$timestamp[i],test$timestamp[i-1],units="mins")
}
但是这个给了我错误,而且我必须告诉它不要计算新车第一排的时差(例如行[1]和[4])。
非常感谢您提前帮助我!
答案 0 :(得分:2)
也许一个双循环就好了。
output <- c()
for(car in unique(test$carName)){
tmp <- test[test$carName==car,]
out <- c(NA)
for(j in 2:nrow(tmp)){
out[j] <- difftime(tmp$timestamp[j],tmp$timestamp[j-1],units="mins")
}
output <- c(output, out)
}