Я пытаюсь создать подмножество строк набора данных, используя условие, основанное на предыдущей строке, сохраняя при этом предыдущую строку в подмножественных данных.По сути, это то же самое, что и вопрос здесь, но я ищу подход dplyr:
Выбор определенных строк на основе предыдущего значения строки (в том же столбце)
Я использовал подход dplyr, примененный в комментариях к этому ответу, но я не могу выяснить последний шаг сохранения предыдущего ряда.
Я могу получить строки, которые поддерживают интересующее меня условие (incorrect
, когда предыдущая строка не enter
).
set.seed(123)
x=c("enter","incorrect","enter","correct","incorrect",
"enter","correct","enter","incorrect")
y=c(runif(9, 5.0, 7.5))
z=data.frame(x,y)
filter(z, x=="incorrect" & lag(x)!="enter")
Что дает, как и ожидалось:
x y
1 incorrect 7.351168
Я хотел бы получить следующее: все строки, отфильтрованные по условию, будут сохранены со строкой, предшествующей им в исходном наборе данных:
x y
1 correct 7.207544
2 incorrect 7.351168
Любая помощь будет принята с благодарностью!