我有如下内容:
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的“每日”数量。
但是,我也想在condition == 1之后添加“每日”(即使当前行的condition == 0)。因此,例如,第1组“每日”为3(第7、8、9、9天),2(第12和13天)和1(第15天),但我实际上希望“每日”为0(对于第7天, condition == 0),2(对于condition == 1的第8天和第9天),2(对于第12天和第13天,即使第13天的条件== 0,我在这里尝试了lag / diff函数)和0 (对于条件== 0的第15天)。
因此,当条件从下一行的1-> 0开始(并且是第二天,不是> =两天后)时,我希望此值保留为“每日”计数的一部分,但是当条件从我想在下一行0-> 1重置计数。
我希望使用一列,类似于以下内容(可能不太有效),但是非常欢迎使用其他方法返回每个组的“每日”数量上限(第1组的最大“每日”数量为2,第2组的“每日”最大为3,第3组的最大“每日”为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
谢谢!