用 R 中的最后一个或下一个非 NA 值填充 NA

问题描述

我试图用 R 中同一组内的其他非 NA 值填充列中的 NA 值。 所以我的数据看起来像这样:

df
       id year pop
1  E1 2000  NA
2  E2 2000  NA
3  E2 2001  NA
4  E2 2003 120
5  E2 2005 125
6  E3 1999 115
7  E3 2001 300
8  E3 2003  NA
9  E4 2004  10
10 E4 2005  NA
11 E4 2008  NA
12 E4 2009   9
13 E5 2002  12
14 E5 2003  80

并且我希望 NA 值在同一组 pop 中具有 id 的最后一个非 NA 值或下一个非 NA 值。看起来像这样:

    df.desired
   id year pop
1  E1 2000  NA
2  E2 2000 120
3  E2 2001 120
4  E2 2003 120
5  E2 2005 125
6  E3 1999 115
7  E3 2001 300
8  E3 2003 300
9  E4 2004  10
10 E4 2005  10
11 E4 2008   9
12 E4 2009   9
13 E5 2002  12
14 E5 2003  80

我对 zoo::na.locf()dplyr::fill() 尝试了不同的方法,但我一直遇到两个主要问题:1. 我遇到错误,因为整个组只有 NA(例如此处的 id == "E1")和 2 . 我只能选择最后一个或 naxt 非 NA 值。 这些是我尝试过的一些示例:

library(tidyverse)
library(zoo)
    df.desired <- df %>%
group_by(id) %>%
      arrange(year)%>%
      mutate(pop_imputated = pop)%>%
      fill(pop_imputated)%>%
      ungroup()


df.desired <- df %>%
  group_by(id) %>%
  arrange(year)%>%
  mutate(pop_imputated = zoo::na.locf(pop))%>%
  fill(pop_imputated)%>%
  ungroup()

有什么想法吗? 非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)