我有一个很长的数据框,其中有很多NAs。但是我想将它压缩,使所有NAs都用按变量分组时的第一个非缺失值填充 - 但如果观测值只有NAs,则保留它。在我更新R之前,我有一个可行的代码(如下所示),但现在如果它们的某个列全部为NAs,则会删除行。
这是一个样本数据集:
library(dplyr)
test <- tibble(name = c("J", "C", "J", "C"),
test_1 = c(1:2, NA, NA),
test_2 = c(NA, NA, 3:4),
make_up_test = c(NA, 1, NA, NA))
以下是曾经有效的代码——但现在删除了只在一个列中包含NAs的观测值(请注意,J被删除了,因为他在测试观测中仅具有NAs)
test %>%
group_by(name) %>%
summarise_all(~first(na.omit(.)))
This is what I'm hoping to get:
solution <- tibble(name = c("J", "C"),
test_1 = c(1:2),
test_2 = c(3:4),
make_up_test = c(NA, 1))