【发布时间】:2019-04-09 18:42:49
【问题描述】:
我想在 mutate_at() 中编写一个条件语句,以便 approx() 不会在缺少 2 行以上数据的值之间进行插值。
以下是数据:
dat <- data.frame(
time = 1:10,
var1 = c(10, 10, 10, 12, 12, 12, 15, 15, 15, 15),
var2 = c( 1, NA, 3, 6, NA, NA, NA, 10, 9, 8),
var3 = c(10, NA, NA, 13, 14, 16, NA, 18, 19, 20)
)
这是我想要调整的代码块,它不会在值之间有超过 2 个 NA 的地方进行插值(即 var2 列中的第 5-7 行应该保持 NA 并且所有其他 NA 应该被插值价值观。
library(tidyverse)
dat_int <- dat %>%
mutate_at(vars(c(var2, var3)),
funs(approx(time, ., time, rule = 1, method = "linear")[["y"]]))
【问题讨论】:
-
时间步长总是1吗?您是否只是用周围值的平均值填充缺失值?
-
@MrFlick,不,时间步长并不总是一个。这是一个简化的例子。