创建带有其他条件的每日计数变量

时间:2019-10-10 21:47:44

标签: r

我有如下内容:

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

谢谢!

0 个答案:

没有答案