【问题标题】:Replace NA at the beginning and end of df with dplyr将 df 开头和结尾的 NA 替换为 dplyr
【发布时间】:2015-09-15 18:21:13
【问题描述】:

在列中估算缺失值的最佳包是什么?我查看了处理时间序列数据的 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 结束,rev(na.locf(rev(x))) 开始?

标签: r dplyr na


【解决方案1】:

您可以对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

【讨论】:

  • 谢谢卡洛斯!你还有其他推荐的包吗?
  • @Antex 这真的取决于上下文......但你可以看看 Amelia,它是一个不错的包:gking.harvard.edu/amelia
  • 如果您想留在“Hadleyverse”中,tidyr 包中的fillna.locf 非常相似
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
相关资源
最近更新 更多