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

看板R_Language作者 (understand?)時間1年前 (2023/08/02 10:22), 1年前編輯推噓0(008)
留言8則, 4人參與, 1年前最新討論串1/2 (看更多)
[軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我有一組數據如下,因為對方系統給的數據跨日整點 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 [關鍵字]: -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.247.190.110 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1690942968.A.306.html

08/02 10:37, 1年前 , 1F
approx
08/02 10:37, 1F
※ 編輯: studioA (27.247.190.110 臺灣), 08/02/2023 11:04:00 ※ 編輯: studioA (27.247.190.110 臺灣), 08/02/2023 11:06:23

08/02 11:08, 1年前 , 2F
剛剛試過approx 無法一次多個欄位
08/02 11:08, 2F

08/02 12:14, 1年前 , 3F
用for loop update dataframe 本來就非常慢也沒有效
08/02 12:14, 3F

08/02 12:14, 1年前 , 4F
08/02 12:14, 4F

08/02 12:15, 1年前 , 5F
稍微考慮一下怎麼樣捨棄掉for loop就可以加速了 這
08/02 12:15, 5F

08/02 12:15, 1年前 , 6F
裡應該有很多方法
08/02 12:15, 6F

08/03 16:51, 1年前 , 7F
這麼整齊(一律是23:57至00:03)之間的話,把它們截出來
08/03 16:51, 7F

08/03 16:53, 1年前 , 8F
兩兩平均再回填即可。這樣做就沒有loop。
08/03 16:53, 8F
文章代碼(AID): #1aoRtuC6 (R_Language)
文章代碼(AID): #1aoRtuC6 (R_Language)