[英]Trying to loop through a dataframe
我正在嘗試使用 GPS 數據計算總活動驅動程序。 我編寫了一個循環,旨在計算 dataframe 中兩個連續點在值范圍內的時間差,並將其相加。
然而,最終的 output 比預期的要小得多,以秒為單位而不是數百小時,這讓我相信它只是循環了幾次或沒有正確地對這些值求和。 我的編程知識主要來自 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()
dplyr
來避免循環:
library(dplyr)
diff <- difftime(dlstandard, lead(dlstandard, 1, defaultValue=dlstandard), units="secs")
diffsum <- sum(diff)
請注意,以上是解決問題的矢量化方法,通常是使用 R 時的 go 方法。
你可以試試:
diffsum <- as.numeric(sum(difftime(tail(dlstandard, -1),
head(dlstandard, -1), units = 'secs')))
這將以秒為單位給出diffsum
總和。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.