R 试图在数据帧中循环
我正在尝试使用GPS数据计算总活动驱动力。我编写了一个循环,用于计算数据帧中两个连续点之间在值范围内的时间差,并在进行时求和 然而,最终的输出比预期的要小得多,以秒为单位,而不是数百小时,这让我相信它只是循环了几次,或者没有正确地求和值。我的编程知识主要来自Python,我是在R中正确地实现了这个想法,还是可以写得更好? 我的数据如下所示:R 试图在数据帧中循环,r,loops,difftime,R,Loops,Difftime,我正在尝试使用GPS数据计算总活动驱动力。我编写了一个循环,用于计算数据帧中两个连续点之间在值范围内的时间差,并在进行时求和 然而,最终的输出比预期的要小得多,以秒为单位,而不是数百小时,这让我相信它只是循环了几次,或者没有正确地求和值。我的编程知识主要来自Python,我是在R中正确地实现了这个想法,还是可以写得更好? 我的数据如下所示: DriveNo Date.and.Time Latitude Longitude 1 264 2014-02-01 12:12:05 4
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()
函数来避免循环:
库(dplyr)
diff您可以尝试:
diffsum <- as.numeric(sum(difftime(tail(dlstandard, -1),
head(dlstandard, -1), units = 'secs')))
diffsum欢迎使用堆栈溢出。请以纯文本格式包含一些示例数据。例如,dlstandard
中有足够的行来生成一些输出。如果要对每行之间的差异求和,则只需从最后一行中减去第一行。因此,“lead()”函数不再需要i和i+1结构,但这段代码是否仍然计算整个连续值范围内的差值,还是只计算一次?出于某种原因,使用此选项会给我一个NA答案。@Frankyaygrr问题可能会发生,因为对于dlstandard
中的最终条目,潜在客户将返回NA
。我已经更新了我的代码,lead
现在将返回与上一个值相同的值,这样差异将为零,并且不会对总和作出贡献。这起作用,并给我一个大致相当于28天的答案,这是研究发生的时间,然而,我只是在寻找出租车积极行驶的时间。是否有一种方法可以修改此代码以忽略大于1分钟的时间差时间值,这样就不会将它们添加到总的diffsum中?Thankyou@FrankYaygrrr尝试diffsum