尝试遍历数据框

Trying to loop through a dataframe

我正在尝试使用 GPS 数据计算总数 activity driver。我编写了一个循环,旨在计算数据帧中两个连续点之间在值范围内的时间差,并对其求和。

然而,最终输出比预期的要小得多,大约是秒而不是数百小时,这让我相信它只是循环了几次或者没有正确地求和值。我的编程知识主要来自 Python,我是在 R 中正确地实现了这个想法还是我可以把它写得更好? 我的数据看起来像这样:

DriveNo       Date.and.Time Latitude Longitude
1     264 2014-02-01 12:12:05 41.91605  12.37186
2     264 2014-02-01 12:12:05 41.91605  12.37186
3     264 2014-02-01 12:12:12 41.91607  12.37221
4     264 2014-02-01 12:12:27 41.91619  12.37365
5     264 2014-02-01 12:12:42 41.91627  12.37490
6     264 2014-02-01 12:12:57 41.91669  12.37610

有没有一种方法可以将每次迭代的结果保存到列表中,以便我可以分析问题可能发生在值范围内的哪个位置?

datelist = taxi_264$Date.and.Time
dlstandard = as.POSIXlt(datelist)
diffsum = 0
for (i in range(1:83193))
{
  diff = difftime(dlstandard[i], dlstandard[(i+1)], units = "secs")
  diffsum = diffsum + diff
}

您可以使用 dplyr 中的 lead() 函数来避免循环:

library(dplyr)

diff <- difftime(dlstandard, lead(dlstandard, 1, defaultValue=dlstandard), units="secs")
diffsum <- sum(diff)

请注意,以上是矢量化解决问题的方法,通常是使用 R 时的方法。

你可以试试:

diffsum <- as.numeric(sum(difftime(tail(dlstandard, -1), 
                                   head(dlstandard, -1), units = 'secs')))

这将给出 diffsum 作为秒数之和。