2016-12-28 47 views
0

我想計算移動平均數以填充已知條目3,5和1的NA條目。我如何使用R中的包動物園來做到這一點?R和Zoo:移動平均數據不整齊?

輸入

> library(zoo) 
> hh <- c(NA, NA, NA, 3, NA, 5, NA, 1, NA, NA, NA, NA) 

失敗

故障與rollmean

> rollmean(hh,na.omit=TRUE,k=1) 
    [1] NA NA NA NA NA NA NA NA NA NA NA NA 
    > rollmean(hh,4, na.omit=TRUE,k=1) 
    [1] NA NA NA NA NA NA NA NA NA NA NA NA 
    > rollmean(hh,4, na.rm=TRUE,k=1) 
    [1] NA NA NA NA NA NA NA NA NA NA NA NA 

故障與Rollapply

> rollapply(hh, 4, function(x) mean(x)) 
    [1] NA NA NA NA NA NA NA NA NA 

預期輸出類似

> COMMAND(hh, movingAverageNumber, function(x) mean(x)) 
    [1] 3 3.3 3.4 3 4 5 3 1 2 1.5 1.2 1 0.8 

相關

  1. Using rollmean when there are missing values (NA)

回答

1

根據你在找什麼,怎麼樣:

rollapply(hh, 5, mean, na.rm = TRUE) 
    [1] 3 4 4 3 3 3 1 1 

rollapply(hh, 4, mean, na.rm = TRUE) 
    [1] 3 3 4 4 3 3 1 1 NaN 
+0

+1用於獲取運行:)你將如何填補HH兩端的命令? hh有12個元素,而前一個候選元素有8個元素,而後一個候選元素有9個元素(有一個NaN)。是否有任何選項可以用一些默認值填充NaN值,例如1? –

+0

@Rodo這兩個函數都會產生一個錯誤。輸出顯示的參數設置應該是'width'而不是'by' – manotheshark

+0

@ReganAlpha我建議鍵入'?rollapply'並尋找名爲'fill'的參數 – manotheshark

0

假設你想要的滾動mean四個值(你傳遞k=1rollmean),你需要告訴meanNA

library(zoo) 
rollapply(hh, 4, function(x) mean(x, na.rm=TRUE)) 

[1] 3 3 4 4 3 3 1 1 NaN 

雖然它返回的東西比你期望的輸出不同。如果你想要不同的東西,你需要進一步解釋。