Создайте ежедневную переменную count с дополнительным условием - PullRequest
0 голосов
/ 11 октября 2019

У меня есть что-то вроде следующего:

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

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...