【发布时间】:2021-09-20 06:51:54
【问题描述】:
我在 R 中有一位患者的数据,其中显示了他们在特定条件下检测呈阳性的日期。数据如下所示:
date positive
2005-02-22 yes
2005-04-26 no
2005-08-02 yes
2005-10-04 no
2005-12-06 yes
2006-03-14 no
2006-06-06 no
2006-09-12 yes
2006-12-19 yes
2007-03-27 yes
现在我介绍一个新定义。如果“当前检测结果为阳性,并且 >=50% 的前 365 天检测结果为阳性”,则该患者的状况被定义为“慢性阳性”。 所以我想创建一个输出数据集,告诉我患者在每个日期是否长期呈阳性。例如,输出应如下所示(例如,在 2006-09-12,它们是“阳性”,但不是“慢性阳性”,因为过去 365 天的 4 次访问中有 3 次是阴性的):
date positive chronic
2005-02-22 yes no
2005-04-26 no no
2005-08-02 yes yes
2005-10-04 no no
2005-12-06 yes yes
2006-03-14 no no
2006-06-06 no no
2006-09-12 yes no
2006-12-19 yes no
2007-03-27 yes yes
我该怎么做?在感兴趣的每一行,我需要能够查看之前的行(在过去 365 天内)并评估其中有多少是积极的。我想我可以结合使用lead/lag 函数和dplyr,但我希望能举个例子说明如何做到这一点。
原始数据可以通过以下方式复制:
dat <- structure(list(date = structure(c(12836, 12899, 12997, 13060, 13123, 13221, 13305, 13403, 13501, 13599), class = "Date"),
positive = c("yes", "no", "yes", "no", "yes", "no", "no", "yes", "yes", "yes")),
row.names = c(NA, 10L), class = "data.frame")
【问题讨论】:
标签: r dplyr conditional-statements lag rolling-computation