我有一个数据集,其中包含每天的天数和病例数(例如,疾病,产生的粪便……)
现在,我要计算,直到报告/产生预定量之前,它会持续多长时间。
下面是一个简单的示例:我有十天的时间,每天得到的“病例数”是这一天报告的病例数。
目标是获得一份报告,直到报告至少(5)例为止,每天持续多长时间。
我的数据:
dates<-c("10.03.2020","11.03.2020","12.03.2020","13.03.2020","14.03.2020",
"15.03.2020","16.03.2020","17.03.2020","18.03.2020","19.03.2020")
cases<-c(0,1,2,2,6,2,2,1,5,1)
dftest<-data.frame(dates,cases)
dates cases
1 10.03.2020 0
2 11.03.2020 1
3 12.03.2020 2
4 13.03.2020 2
5 14.03.2020 6
6 15.03.2020 2
7 16.03.2020 2
8 17.03.2020 1
9 18.03.2020 5
10 19.03.2020 1
以及我的预期结果。 (“ days5cases”列也只能是数字):
dates cases days5cases
1 10.03.2020 0 4days
2 11.03.2020 1 3days
3 12.03.2020 2 3days
4 13.03.2020 2 2days
5 14.03.2020 6 1day
6 15.03.2020 2 3days
7 16.03.2020 2 3days
8 17.03.2020 1 2days
9 18.03.2020 5 1day
10 19.03.2020 1 <NA>
编辑:
一些计算“ days5cases”的例子
我的问题:
我如何总结列“案例”,直到达到5个案例?开始计算的是每天的日期。
谢谢您解决这个问题的任何想法……。
我尝试从软件包runner
sum_run
中获取,但是在这里只能获得接下来5天的总和。
Simmilary是来自程序包rollapply
的zoo
。
保持健康!
在基数R中使用sapply
的一种方法是:
sapply(seq_len(nrow(dftest)), function(i)
which(cumsum(dftest$cases[i:nrow(dftest)]) >= 5)[1])
#[1] 4 3 3 2 1 3 3 2 1 NA