识别具有变量所有缺失值的组并在 R 中的组内进行推断

Identify groups with all missing values for a variable and extrapolate within groups in R

我想确定仅具有给定变量缺失值的组。我的数据如下所示:

id <- seq(1:4)
year <- c(2005, 2006, 2007, 2008)
y <- c(6, 11, NA, NA, NA, NA, NA, NA, 9, NA, NA, 7, 8, 7, NA, 12)
test <- data.frame(id, year, y)
arrange(test, desc(id))
print(test)

我尝试按 id 对数据进行分组,并创建了 allNA 变量,该变量应将仅具有缺失值的组分开(我也需要在最终结果中保留那些未触及的行)。然后我在具有一些非缺失值的组内进行推断:

test %>% 
  group_by(id) %>% 
  mutate(allNA = !all(is.na(y))) %>%
  filter(allNA) %>%
  select(-allNA) %>%
  mutate(y2=na.spline(y))

我的推断结果总是不一致。有时在创建 allNA 变量后,我会看到一些 FALSE 值,它会将 2007 年的值保留为缺失或删除它们,但有时当我执行代码时,它都是 TRUE 并且它会推断所有内容。我想知道 allNA 变量是否正在完成它应该做的工作。因此,我决定首先确定 _ 这里是 2007 年 _ 只有 NA 的组,但我不知道如何做到这一点并解决外推问题。

创建列 allNA 后,使用 if/else 应用 na.spline

library(dplyr)
library(zoo)
test %>% 
    group_by(id) %>%
    mutate(allNA = all(is.na(y)),
            y2 = if(!allNA[1]) na.spline(y) else y)