У меня есть следующая таблица, и я хотел бы отфильтровать на основе следующих критериев
Сначала реплицировать данные:
dt1 <- data.frame(ID = c("a", "a", "a", "a", "a","a","a","a",
"b","b","b","b","b","b","b","b",
"c","c","c","c","c","c","c","c",
"d","d","d","d","d","d","d","d"), value = c(0,0,1,1,2,0,0,1,
1,1,1,2,2,2,2,2,
1,1,1,1,1,3,3,3,
0,2,2,2,2,2,2,3))
Теперь я хотел бы создать условие по идентификатору, напримерчто оно удовлетворяет следующему условию:
1) Увеличение значения (> = 1)
2) Увеличение значения остается тем же
3) Минимальное начало увеличения должно бытьв последних 3 последовательных строках (в основном идентификатор: «D» не соответствует)
Согласно приведенной выше таблице, только B и C соответствуют требованиям
До сих пор я сделал следующее, но это не такработает для меня должным образом особенно 3-х критериев.
dt1 %>% group_by(ID) %>% mutate(change = value -lag(value))
%>% filter(all(change %in% c(2,1,0,NA), na.rm = T))