我目前正在尝试在R中为一个向量填充值。 填充的条件是:
- 找到所有NA值
- 然后检查它们前后是否有现有值
- 还要检查NA值之后的值是否大于NA值之前的值
- 如果满足条件,请计算取值前后的平均值。
- 用填充后的值替换NA值
# example one
input_one = c(1,NA,3,4,NA,6,NA,NA)
# example two
input_two = c(NA,NA,3,4,5,6,NA,NA)
# example three
input_three = c(NA,NA,3,4,NA,6,NA,NA)
我开始编写代码来检测可以输入的值。但是我卡在了以下问题上。
# incomplete function to detect the values
sapply(split(!is.na(input[c(rbind(which(is.na(c(input)))-1, which(is.na(c(input)))+1))]),
rep(1:(length(!is.na(input[c(which(is.na(c(input)))-1, which(is.na(c(input)))+1)]))/2), each = 2)), all)
然而,这只能检测可能需要填充的缺失值,并且仅适用于示例一。它不完整,且非常难以阅读和理解。
如果有任何帮助,将不胜感激。