[問題] 如何快速計算內插多個欄位數值

作者: studioA (understand?)   2023-08-02 10:22:46
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
我有一組數據如下,因為對方系統給的數據跨日整點 00:00的數據傳輸有異常
如下所示
日期 時間 參數A 參數B 參數C 參數D
2023-07-02 23:54 25 100 33 99
2023-07-02 23:57 25.1 128 40 89
2023-07-03 0:00
2023-07-03 0:03 25.8 111 52 101
2023-07-03 23:54 25.6 120 39 103
2023-07-04 23:57 27 157 55 88
2023-07-04 0:00
2023-07-04 0:03 24.6 155 48 93
我想使用內插法,上下數據取平均把各參數內插補資料進去,但因為欄位太多,日期也有近2萬筆
用一般for 迴圈發現跑很慢 然後我用apply 卻跑不出來,求解
[程式範例]:
cal <- colnames(data)[-c(1:2)]
for(i in cal){
xset <- which(data$時間=="00:00")
for(j in xset ){
data[j,i] <- (data[j+1,i]+data[j-1,i])/2
}
}
[環境敘述]:
請提供 sessionInfo() 的輸出結果,
R version 4.2.3 (2023-03-15 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22621)
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Traditional)_Taiwan.utf8 LC_CTYPE=Chinese
(Traditional)_Taiwan.utf8
[3] LC_MONETARY=Chinese (Traditional)_Taiwan.utf8
LC_NUMERIC=C
[5] LC_TIME=Chinese (Traditional)_Taiwan.utf8
[關鍵字]:
作者: lycantrope (阿寬)   2023-08-02 10:37:00
approx
作者: studioA (understand?)   2023-08-02 11:08:00
剛剛試過approx 無法一次多個欄位
作者: celestialgod (天)   2023-08-02 12:14:00
用for loop update dataframe 本來就非常慢也沒有效率稍微考慮一下怎麼樣捨棄掉for loop就可以加速了 這裡應該有很多方法
作者: andrew43 (討厭有好心推文後刪文者)   2023-08-03 16:51:00
這麼整齊(一律是23:57至00:03)之間的話,把它們截出來兩兩平均再回填即可。這樣做就沒有loop。

Links booklink

Contact Us: admin [ a t ] ucptt.com