У меня есть такой фрейм данных:
data.frame(
id = rep(1:5, each = 4),
status = c(
NA, "a", "c", "a",
"a", "a", "c", "c",
NA, NA, "c", "c",
"c", NA, "a", "c",
"a", NA, "c", NA),
stringsAsFactors = FALSE)
Моя основная цель - перенести строку «c» в группу (тот же идентификатор). Как только в идентификаторе появляется «c», я хочу, чтобы следующие элементы в этой группе / id были «c». Например, переменная status для id 1 должна выглядеть как NA, «a», «c», «c».
Моя вторая цель - удалить записи / строки с символами NA перед a. Статус переменной для идентификатора 1 будет выглядеть как «a», «c», «c».
Моей третьей целью было бы нести строку «с» назад до первого «а» (если перед этим «а» не было «с») или до конца группы. Для id 3 это будет выглядеть как «c», «c», «c», «c». А для идентификатора 5 это будет выглядеть как «а», «с», «с», «с».
В идеале мой фрейм данных будет выглядеть так:
status: a,c,c, a,a,c,c, c,c,c,c, c,c,c,c, a,c,c,c.
Я понял, что вы можете использовать na.locf для переноса элемента, если есть следующие NA, но я не думаю, что это работает, если я хочу перезаписать / заменить следующие значения, отличные от NA.
Меня особенно интересует, как решить мою основную цель. Это возможно?