创建循环来调整日期/周期?

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

我有一个包含数千人的大数据集。每个人都有几个治疗周期,由单独的行表示,其中每个周期都有 ID、开始日期、结束日期和剂量。如果 2 个后续治疗期间隔超过 7 天,则它们由第三行分隔,还指示中断的开始日期和结束日期,并且剂量 = 0。但是,如果2个周期之间的间隔少于7天,则没有该行。

问题:我想做的是:对于每个人,如果有 2 个或多个月经周期,且间隔时间少于 7 天,则将它们合并为 1 个连续周期。重要的是,各周期具有相同的 ID 和相同的剂量,因为不同剂量的相邻周期不应合并在一起,尽管它们之间的间隔少于 7 天。

您可以看到我的数据集的示例:

library(data.table)

d=data.frame(id=c(1,1,1,1,1,1,1,2,2,2,2,2,2),
             inn=as.Date(c("2017-09-11", "2017-12-21", "2018-03-19", "2018-06-27", "2019-01-15", "2019-04-29", "2019-11-20",
                           "2019-02-06","2019-04-07","2019-05-14","2019-07-13","2019-07-23","2019-09-25")), 
             out=as.Date(c("2017-12-21","2018-03-19", "2018-06-27", "2019-01-15", "2019-04-25", "2019-11-15", "2021-07-10",
                           "2019-04-07","2019-05-14","2019-07-13","2019-07-23","2019-09-21","2021-05-14")),
             dose=c("20","0","20","0", "20", "20","20","2.5","0","2.5","0","2.5","2.5"))

setDT(d)

我希望的结果是:

e=data.frame(id=c(1,1,1,1,1,2,2,2,2,2),
             inn=as.Date(c("2017-09-11", "2017-12-21", "2018-03-19", "2018-06-27", "2019-01-15",
                           "2019-02-06","2019-04-07","2019-05-14","2019-07-13","2019-07-23")), 
             out=as.Date(c("2017-12-21","2018-03-19", "2018-06-27", "2019-01-15","2021-07-10",
                           "2019-04-07","2019-05-14","2019-07-13","2019-07-23","2021-05-14")),
             dose=c("20","0","20","0", "20","2.5","0","2.5","0","2.5"))

我尝试使用“ifelse”,但是如果有两个以上的相邻周期需要合并在一起,它会出错。我想我需要创建一种“循环”,但我无法弄清楚.. 我将不胜感激任何帮助..

loops
1个回答
0
投票

当我注册时,我总是收到消息

出了点问题。请联系我们: [电子邮件受保护]寻求帮助。

有人可以帮我吗?

© www.soinside.com 2019 - 2024. All rights reserved.