【发布时间】:2019-05-24 06:30:07
【问题描述】:
只有当它是 2 个或更少的连续缺失值并在 R 中使用 na.locf 将其他缺失值保留为 NA 时,您如何估算缺失值? 例如,
x<-c(2,1,NA,4,4,NA,NA,NA)
输出应该是这样的
2,1,1,4,4,NA,NA,NA
第一个 NA 由先前可用的“1”估算,后 3 个 NA 不应估算。
【问题讨论】:
-
使用包中的
na.locf()zoo
只有当它是 2 个或更少的连续缺失值并在 R 中使用 na.locf 将其他缺失值保留为 NA 时,您如何估算缺失值? 例如,
x<-c(2,1,NA,4,4,NA,NA,NA)
输出应该是这样的
2,1,1,4,4,NA,NA,NA
第一个 NA 由先前可用的“1”估算,后 3 个 NA 不应估算。
【问题讨论】:
na.locf() zoo
来自zoo 的na.locf 有一个'maxgap' 参数,所以你可以简单地这样做:
library(zoo)
na.locf(x, maxgap = 2, na.rm = FALSE)
[1] 2 1 1 4 4 NA NA NA
【讨论】:
我们可以使用data.table中的rleid来创建组,使用ave统计每个组的length,并且只有当该组的值为NA和length时才使用na.locf小于等于 2。
library(data.table)
library(zoo)
ifelse(ave(x, rleid(x), FUN = length) <= 2 & is.na(x), na.locf(x), x)
#[1] 2 1 1 4 4 NA NA NA
【讨论】: