2017-08-02 6 views
2

私は時間データの列を持ち、rollapplyを使用して毎時24時間の平均を計算します。私のデータにはNAが含まれています.1回の24時間データの75%が利用可能な場合はローリング平均を計算したいだけです。それ以外の場合は、24ローリング平均をNAと見なします。データの一定割合が利用可能な場合にのみrollapplyを使用して平均を計算する

df %>% 
     mutate(rolling_avg = rollapply(hourly_data, 24, FUN = mean ,align = "right", fill = NA)) 

これを行うにはどうすればよいですか?

答えて

2

はあなたが述べ正確に何をすべきかの関数を定義します。

f <- function(v) { 
    if(sum(is.na(v)) > length(v)*0.25) return(NA) 
    mean(v, na.rm = TRUE) 
} 

その後meanの代わりにそれを使用する:

df %>% mutate(rolling_avg = rollapply(hourly_data, 24, FUN = f, 
            align = "right", fill = NA)) 
+0

を更新しました。ありがとう。 –

関連する問題