将 df 开头和结尾的 NA 替换为 dplyr

Replace NA at the beginning and end of df with dplyr

用于估算列中缺失值的最佳程序包是什么?我查看了处理时间序列数据的 zoo 包,并使用了 LOCF (na.locf),但首先跳过 NA...

这是一个示例数据框

> df <- within(df, {duration[c(1,5,9)] <- NA})
> df
  duration
1       NA
2        2
3        3
4        4
5       NA
6        6
7        7
8        8
9       NA

您可以对 na.locf 说您不想删除 NA,因此它会在替换中保留第一个 NA。然后你可以做另一个替换说你想从最后开始用第一个非NA元素替换剩余的NA

df <-read.table(text = "duration
       NA
        2
        3
        4
       NA
        6
        7
        8
       NA", header = TRUE)

library(zoo)
df <- na.locf(df, na.rm = FALSE)
df <- na.locf(df, na.rm = FALSE, fromLast = TRUE)
df
  duration
1        2
2        2
3        3
4        4
5        4
6        6
7        7
8        8
9        8