我正在为如何在每小时温度矢量中填充一些NAs而奋斗。
超过21885例,我有472个随机分布的NAs。对于一天中温度曲线的形状,应该以合乎逻辑的方式填写NAs。
它们是分组分发的。在一行中有一个独立的、由2、3、4或更多NAs组成的组。如果这个组是小的,我会接受前面的或下面的值,但是当这个组很大时,它就不能工作了。
我认为我是上一个已知值和下一个值之间的插值,这是理想的,但是我不知道该如何做,因为我对R有点陌生。
谢谢您的时间,任何关于这个问题的功能或方法的建议都将非常感谢。
示例:
mydate <- c("2017-03-23 09:00:00 CET","2017-03-23 10:00:00 CET", "2017-03-23 11:00:00 CET" ,"2017-03-23 12:00:00 CET" ,"2017-03-23 13:00:00 CET" ,"2017-03-23 14:00:00 CET" ,"2017-03-23 15:00:00 CET", "2017-03-23 16:00:00 CET",
"2017-03-23 17:00:00 CET", "2017-03-23 18:00:00 CET", "2017-03-23 19:00:00 CET" ,"2017-03-23 20:00:00 CET" ,"2017-03-23 21:00:00 CET" ,"2017-03-23 22:00:00 CET", "2017-03-23 23:00:00 CET" ,"2017-03-24 00:00:00 CET",
"2017-03-24 01:00:00 CET", "2017-03-24 02:00:00 CET" ,"2017-03-24 03:00:00 CET" ,"2017-03-24 04:00:00 CET")
mytemp <- c(12, 13, 13, 15, 16, 15, NA, NA, NA, NA ,NA, NA, NA, NA, NA, NA, 10, 10, 9, 9)
mydataframe <- as.data.frame(cbind(mydate, mytemp))
所有实例的CSV:https://wetransfer.com/downloads/a1806d8b04013e3ea4acee9bff746b1d20170803073703/8e6e4c
发布于 2017-08-03 00:00:35
动物园包中的这个功能似乎完成了以下工作:
zoo::na.fill(mytemp, fill = "extend")
[1] 12.00000 13.00000 13.00000 15.00000 16.00000 15.00000 14.54545
[8] 14.09091 13.63636 13.18182 12.72727 12.27273 11.81818 11.36364
[15] 10.90909 10.45455 10.00000 10.00000 9.00000 9.00000
编辑:这问题及其答案处理更一般的情况,时间点不是等距的,使用zoo::na.approx
。一个不同之处是,na.approx
不扩展到领先的和尾随的NAs,而na.fill
则扩展到(当fill = "extend"
)。
https://stackoverflow.com/questions/45477798
复制