For循环计算时间戳之间的时间

时间:2016-04-19 12:33:07

标签: r

所以,我绝对吮吸循环(如果你有任何推荐的文档来练习它,请告诉我)。但是,目前我想计算每个实例和之前实例的时间戳之间的时间差(对于几十万个实例)。为了说明(数据集“测试”):

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])。

非常感谢您提前帮助我!

1 个答案:

答案 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)
}