使用每个 id 的最后一次观察来填充缺失值

问题描述 投票:0回答:1

使用下面的代码,我尝试使用 marital 列的基线值并将每个 id 的值向前推进。除了代码的最后一块无法继承基线值之外,以下步骤均有效。

确定每个“id”的基线值

baseline_values <- tapply(female_98_2020$year, female_98_2020$hhidpn, min)

使用基线值创建一个新变量“marital_base”

female_98_2020$marital_base <- ifelse(female_98_2020$year == baseline_values[as.character(female_98_2020$hhidpn)], female_98_2020$marital, NA)

使用结转的最后一次观测值 (locf) 来填充缺失值

library(zoo) 
female_98_2020 <- female_98_2020 %>%
  group_by(hhidpn) %>%
  mutate(marital_base = zoo::na.locf(marital_base, na.rm = FALSE)) %>%
  ungroup()
r dplyr zoo
1个回答
0
投票

我发现 na.rm 必须是 TRUE:

library(zoo) 
female_98_2020 <- female_98_2020 %>%
  group_by(hhidpn) %>%
  mutate(marital_base = zoo::na.locf(marital_base, na.rm = TRUE)) %>%
  ungroup()
© www.soinside.com 2019 - 2024. All rights reserved.