直到病例总数达到最小5的天数-R dyplyr解决方案

问题描述 投票:1回答:1

我有一个数据集,其中包含每天的天数和病例数(例如,疾病,产生的粪便……)

现在,我要计算,直到报告/产生预定量之前,它会持续多长时间。

下面是一个简单的示例:我有十天的时间,每天得到的“病例数”是这一天报告的病例数。

目标是获得一份报告,直到报告至少(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”的例子

  • 10.03.2020 4天,因为:在13.03.2020达到5(0 + 1 + 2 + 2 = 5)
  • 11.03.2020 3天,因为:在13年3月13日达到5(1 + 2 + 2 = 5)
  • 12.03.2020 3天,因为:在14.03.2020达到5(2 + 2 + 6 = 10> 5)
  • 13.03.2020 2天,因为:在14年3月14日达到5(2 + 6 = 8> 5)
  • 14.03.2020 1天,因为:在14年3月14日达到5(6> 5)
  • 依此类推...

我的问题:

我如何总结列“案例”,直到达到5个案例?开始计算的是每天的日期。

谢谢您解决这个问题的任何想法……。

我尝试从软件包runner sum_run中获取,但是在这里只能获得接下来5天的总和。

Simmilary是来自程序包rollapplyzoo

保持健康!

r dplyr sum
1个回答
0
投票

在基数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
© www.soinside.com 2019 - 2024. All rights reserved.