【发布时间】:2020-06-08 15:22:14
【问题描述】:
我正在处理一个包含一些缺失值的天气变量(温度、降水等)数据集。由于我的特定方法(在几天内对这些变量求和),我需要处理数据集中的 NA 值。
当缺少每日值时,我想用前一天和后一天的平均值填充这一天。这里的假设是天气值从一天到另一天是相似的。是的,我意识到这是一个很大的假设。
我开发了以下内容:
maxTemp <- c(13.2, 10.7, NA, 17.9, 6.6, 10, 13, NA, NA, 8.8, 9.9, 14.9, 16.3, NA, 18, 9.9, 11.5, 15.3, 21.7, 23.9, 26.6, 27, 22.3, NA, 17.9)
weather <- as.data.frame(maxTemp)
weather %>%
mutate(maxTempNA = if_else(is.na(maxTemp),
(lag(maxTemp) + lead(maxTemp))/2,
maxTemp))
但是,在某些情况下,我连续几天有两个 NA 值,所以这不起作用。关于编码方法的任何想法,以便当连续有两个(或更多)NA时,平均值使用'bookending'值来填充NA?
最终的结果应该是这样的:
maxTemp <- c(13.2, 10.7, 14.3, 17.9, 6.6, 10, 13, 10.9, 10.9, 8.8, 9.9, 14.9, 16.3, 17.15, 18, 9.9, 11.5, 15.3, 21.7, 23.9, 26.6, 27, 22.3, 20.1, 17.9)
【问题讨论】:
标签: r replace interpolation na