目前,我正在尝试在R中的向量中估算值。的归责是。
# 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)
但是,这只会检测可能是可归因的,并且仅适用于示例一。它不完整且不幸的是,它很难阅读和理解。
在此方面的任何帮助将不胜感激。
我们可以使用dplyr
的lag
和lead
功能:
input_three = c(NA,NA,3,4,NA,6,NA,NA)
library(dplyr)
ifelse(is.na(input_three) & lead(input_three) > lag(input_three),
(lag(input_three) + lead(input_three))/ 2,
input_three)
拒绝:
[1] NA NA 3 4 5 6 NA NA