Слегка сложно сформулировать, поскольку, насколько я видел, ни один из подобных вопросов не ответил на мою проблему.
У меня есть data.frame, такой как:
df1 <- data.frame(id = rep(c("a", "b","c"), each = 4),
val = c(NA, NA, NA, NA, 1, 2, 2, 3,NA,2,NA,3))
df1
id val
1 a NA
2 a NA
3 a NA
4 a NA
5 b 1
6 b 2
7 b 2
8 b 3
9 c NA
10 c 2
11 c NA
12 c 3
и я хочу избавиться от всех значений NA (достаточно просто с помощью, например, filter()), но убедитесь, что, если это удаляет все одно значение id (в этом случае он удаляет каждый экземпляр "a"), что одна дополнительная строка вставлен из (например) а = 0
чтобы:
id val
1 a 0
2 b 1
3 b 2
4 b 2
5 b 3
6 c 2
7 c 3
очевидно, достаточно легко сделать это окольным путем, но мне было интересно, есть ли аккуратный/элегантный способ сделать это. Я думал, что tidyr :: complete() может помочь, но не совсем уверен, как применить его к случаю, подобному этому
Я не забочусь о порядке строк
Ура!
редактировать: обновлено с более четким желаемым выводом может сделать желаемые ответы, представленные до этого, немного менее ясными