以下是我的数据的示例:
pupilsize <- c(500, 400, NA, NA, 100, 600, 500, NA, NA, NA, 500)
rlelength <- c(4,4,2,2,6,6,6,90,90,90,50)
data <- data.frame(cbind(pupilsize,rlelength))
如果数据$ rlelength中的数字小于86,我想将na.approx函数应用于数据$ pupilsize 中的NA值块。
最终结果应为
data$pupilsize
[1] 500 400 300 200 100 600 500 NA NA NA 500
我在分割我想要的NA值的块时遇到了很多麻烦。非常感谢任何帮助!
答案 0 :(得分:2)
我们可以使用ifelse
data$pupilsize <- with(data, ifelse(rlelength< 86, na.approx(pupilsize), pupilsize))
data$pupilsize
#[1] 500 400 300 200 100 600 500 NA NA NA 500
或者
i1 <- data$rlelength < 86
data$pupilsize[i1] <- na.approx(data$pupilsize[i1])
或者我们可以使用data.table
方法提高效率。
library(data.table)
setDT(data)[rlelength < 86, pupilsize := na.approx(pupilsize)]