Это мой фрейм данных:
library(zoo)
library(dplyr)
df <- data.frame(
id = rep(1:4, each = 4),
status = c(
NA, "a", "c", "a",
NA, "c", "c", "c",
NA, NA, "a", "c",
NA, NA, "c", "c"),
otherVar = letters[1:16],
stringsAsFactors = FALSE)
Для переменной status я хочу, чтобы следующее наблюдение было перенесено назад в пределах группы (id).
df %>% group_by(id) %>% na.locf(fromLast = TRUE) %>% ungroup
Тем не менее, я хочу, чтобы только мои "с" переносились в обратном направлении, а не "а".
Из состояния переменной:
NA "a" "c" "a" NA "c" "c" "c" NA NA "a" "c" NA NA "c" "c"
Я хочу получить:
NA "a" "c" "a" "c" "c" "c" "c" NA NA "a" "c" "c" "c" "c" "c"
Соответственно:
data.frame(
id = rep(1:4, each = 4),
status = c(
NA, "a", "c", "a",
"c", "c", "c", "c",
NA, NA, "a", "c",
"c", "c", "c", "c"),
otherVar = letters[1:16],
stringsAsFactors = FALSE)
Есть ли способ сделать это?