我在幾個特定的??列欄位中有一個帶有 NA 值的時間序列資料。嘗試用插值替換列欄位中的 NA 時出現錯誤。下面是我嘗試執行的示例代碼,并顯示下面的錯誤訊息。第一行的值為 17.58(溫度),下一個值僅在第 30 行(2 分鐘時間步長),值為 16.58。這種 NA 模式和資料可用性擴展到其余資料。
library(zoo)
my_data[, 42] <- na.approx(my_data[, 42])
[<-.data.frame( , , 42, value = c(17.58, 17.5466666666667 *tmp*, : 替換有 120726 行,資料有 132373
uj5u.com熱心網友回復:
它在 ?na.approx
與物件結構相似的物件,其中 NA 被插值替換。對于 na.approx僅替換內部 NA,如果 na.rm = TRUE 則省略前導或尾隨 NA,如果 na.rm = FALSE 則不替換。
默認情況下,na.approx使用na.rm = TRUE
na.approx(object, x = index(object), xout, ..., na.rm = TRUE, maxgap = Inf, 沿)
因此,我們可以將代碼更改為
my_data[, 42] <- na.approx(my_data[, 42], na.rm = FALSE)
在大型資料集中,可能有領先/落后的 NA,并且使用 OP 的代碼會導致輸出向量的元素數量較少na.rm = TRUE,這會觸發替換中的長度差異錯誤
uj5u.com熱心網友回復:
如果您需要線性插值,也許我們可以使用approxfun,例如
> y <- c(17.58, rep(NA, 28), 16.58)
> approxfun(which(!is.na(y)), na.omit(y))(seq_along(y))
[1] 17.58000 17.54552 17.51103 17.47655 17.44207 17.40759 17.37310 17.33862
[9] 17.30414 17.26966 17.23517 17.20069 17.16621 17.13172 17.09724 17.06276
[17] 17.02828 16.99379 16.95931 16.92483 16.89034 16.85586 16.82138 16.78690
[25] 16.75241 16.71793 16.68345 16.64897 16.61448 16.58000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420118.html
標籤:
上一篇:R:“extdata”的含義?
下一篇:使用滑塊回圈通過函式生成的圖
