У меня есть что-то вроде следующего:
df<-data.frame(group=c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3),
condition=c(0,1,1,1,0,0, 0,1,1,1,1,1, 1, 1, 0, 1, 0,1),
day=c(7, 8, 9, 12, 13, 15, 16, 17, 18, 19, 21, 22, 23, 28, 29, 31, 32, 33)
)
Я пытаюсь подсчитать количество «ежедневных» условий == 1 на «группу».
Но я также хочу включить «dailys» сразу после условия == 1 (даже если текущее состояние строки == 0). Так, например, для группы 1 «dailys» будет 3 (дни 7, 8, 9), 2 (дни 12 и 13) и 1 (день 15), но я НАСТОЯЩЕМУ хотел бы «dailys» 0 (для дня 7, гдеусловие == 0), 2 (для дней 8 и 9, где условие == 1), 2 (для дней 12 и 13 ДАЖЕ ЧЕРЕЗ условие == 0 для дня 13, я пробовал здесь функции lag / diff) и 0(на 15-й день, где условие == 0).
Итак, когда условие переходит от 1-> 0 в следующем ряду (И это на следующий день, НЕ> = через два дня), я хочу, чтобы это оставалось как часть «ежедневного» подсчета, но когдаусловие идет от 0-> 1 в следующей строке. Я бы хотел, чтобы счетчик сбрасывался.
Я бы хотел, чтобы столбец работал, что-то вроде следующего (что может быть неэффективно), но другие методывозвращение максимального количества 'dailys' на группу очень приветствуется (группа 1 имеет максимальное "dailys" 2, группа 2 имеет максимальное "dailys" 3, группа 3 имеет максимальное dailys 2):
# group condition day intermediate want
#1 1 0 7 0 0
#2 1 1 8 1 2
#3 1 1 9 2 2
#4 1 1 12 1 2
#5 1 0 13 2 2
#6 1 0 15 0 0
#7 2 0 16 0 0
#8 2 1 17 1 3
#9 2 1 18 2 3
#10 2 1 19 3 3
#11 2 1 21 1 2
#12 2 1 22 2 2
#13 3 1 23 1 1
#14 3 1 28 1 2
#15 3 0 29 2 2
#16 3 1 31 1 2
#17 3 0 32 2 2
#18 3 1 33 1 1
Заранее спасибо!