我目前有一个包含多个列和行的xts,其中可以存在一些NAs,如下所示:
utc VR1_40 VR2_40 VR3_40 Q1_40 Q2_40 Q3_40
16.05.18 01:49:20 4 4 4 400 400 400
16.05.18 01:50:20 5 5 5 500 500 500
16.05.18 01:54:48 5 5 5 500 500 500
16.05.18 01:57:54 5 5 5 500 500 500
16.05.18 01:59:54 5 5 5 500 500 500
16.05.18 02:00:16 null 2 2 200 200 null
16.05.18 02:03:10 2 null 2 200 200 null
16.05.18 02:07:12 2 2 null 200 null 200
16.05.18 02:09:52 2 2 2 null 200 null
16.05.18 03:09:52 3 3 3 300 300 300
我想要平均10分钟,所以我应用以下代码:
means.xts <- period.apply(ts, endpoints(ts, "mins", k=10), FUN=mean)
问题是,一个NA将输出整个10分钟的平均NA。
VR1_40 Q1_40 VR2_40 Q2_40 VR3_40 Q3_40
2018-05-16 01:49:20 4 400 4 400 4 400
2018-05-16 01:59:54 5 500 5 500 5 500
2018-05-16 02:09:52 NA NA NA NA NA NA
2018-05-16 03:09:52 3 300 3 300 3 300
means.xts <- period.apply(na.omit(ts), endpoints(na.omit(ts), "mins", k=10), FUN=mean)
将从结果中排除整个NA行。
定义一个自定义均值函数
means.xts <- period.apply(na.omit(ts), endpoints(na.omit(ts), "mins", k=10), FUN = function(x){mean(x, na.rm = TRUE)})
将所有列平均为一列。
似乎我错过了一些简单的事情。。。如有任何帮助,我们将不胜感激。
谢谢!