【发布时间】:2019-05-14 15:36:46
【问题描述】:
我正在尝试根据前一个和最后一个 NA 值是否相同来填充缺失的数据。例如,这是虚拟数据集:
df <- data.frame(ID = c(rep(1, 6), rep(2, 6), rep(3, 6), rep(4, 6), rep(5, 6), rep(6, 6),
rep(7, 6), rep(8, 6), rep(9, 6), rep(10, 6)),
with_missing = c("a", "a", NA, NA, "a", "a",
"a", "a", NA, "b", "b", "b",
"a", NA, NA, NA, "c", "c",
"b", NA, "a", "a", "a", "a",
"a", NA, NA, NA, NA, "a",
"a", "a", NA, "b", "a", "a",
"a", "a", NA, NA, "a", "a",
"a", "a", NA, "b", "b", "b",
"a", NA, NA, NA, "c", "c",
"b", NA, "a", "a", "a", "a"),
desired_result = c("a", "a", "a", "a", "a", "a",
"a", "a", NA, "b", "b", "b",
"a", NA, NA, NA, "c", "c",
"b", NA, "a", "a", "a", "a",
"a", "a", "a", "a", "a", "a",
"a", "b", "b", "b", "a", "a",
"a", "a", "a", "a", "a", "a",
"a", "a", NA, "b", "b", "b",
"a", NA, NA, NA, "c", "c",
"b", NA, "a", "a", "a", "a"))
因此,例如,如果有四行的间隙,但间隙前后的值相同,那么我希望用相同的值填充间隙;而如果 NA 之前和之后的值不同,我不想填充它。另外,我需要按 ID 变量对数据进行分组。
我试过 na.locf 但我不知道如何添加“如果它们在 NA 之前和之后相同”的条件。
谢谢。
【问题讨论】:
标签: r na missing-data