Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 跟踪患者可能没有药物的时间_R_Dplyr_Lubridate - Fatal编程技术网

R 跟踪患者可能没有药物的时间

R 跟踪患者可能没有药物的时间,r,dplyr,lubridate,R,Dplyr,Lubridate,我在这个问题上有点纠结,我可以利用社区的一些见解。比如说,由于特殊情况,患者不定期地接受药物治疗: Patient_Receiving_Schedule <- tibble(Medicine_Received = c(ymd("2019-01-01"), ymd("2019-01-20"), ymd("2019-02-01"), ymd("2019-06-01"), ymd("2019-06-15&q

我在这个问题上有点纠结,我可以利用社区的一些见解。比如说,由于特殊情况,患者不定期地接受药物治疗:

Patient_Receiving_Schedule <- tibble(Medicine_Received = c(ymd("2019-01-01"), ymd("2019-01-20"), ymd("2019-02-01"), ymd("2019-06-01"), ymd("2019-06-15")),
                                        Days_of_Medicine_Received = c(30,30,30,30,30))

Patient\u Receiving\u Schedule您是否可以使用一种逻辑,即如果在上次装运后的
x
天数内未收到药品,则我们需要重置可用药品的
天数
计算

如果是,则在本例中,您可以使用下面的
x=30
,但实际上您可以将其设置为任何值

library(dplyr)

Patient_Receiving_Schedule %>%
  group_by(grp = cumsum(Medicine_Received - lag(Medicine_Received, default = first(Medicine_Received)) > 30)) %>%
  mutate(Days_of_Medicine_Available = cumsum(Days_of_Medicine_Received) - as.integer(Medicine_Received - first(Medicine_Received))) %>%
  ungroup() %>%
  select(-grp)

#  Medicine_Received Days_of_Medicine_Received Days_of_Medicine_Available
#  <date>                                <dbl>                      <dbl>
#1 2019-01-01                               30                         30
#2 2019-01-20                               30                         41
#3 2019-02-01                               30                         59
#4 2019-06-01                               30                         30
#5 2019-06-15                               30                         46
库(dplyr)
患者接收计划%>%
分组依据(grp=cumsum(收到的药物-滞后(收到的药物,默认值=第一个(收到的药物))>30))%>%
mutate(Days\u of\u Medicine\u Available=cumsum(Days\u of\u Medicine\u Received)-as.integer(Medicine\u Received-first(Medicine\u Received))%>%
解组()%>%
选择(-grp)
#药品收到天数可用药品收到天数可用药品
#                                                        
#1 2019-01-01                               30                         30
#2 2019-01-20                               30                         41
#3 2019-02-01                               30                         59
#4 2019-06-01                               30                         30
#5 2019-06-15                               30                         46

您是否可以使用一种逻辑,即如果在上次装运后的
x
天数内未收到药品,则我们需要重置可用药品的
天数
计算

如果是,则在本例中,您可以使用下面的
x=30
,但实际上您可以将其设置为任何值

library(dplyr)

Patient_Receiving_Schedule %>%
  group_by(grp = cumsum(Medicine_Received - lag(Medicine_Received, default = first(Medicine_Received)) > 30)) %>%
  mutate(Days_of_Medicine_Available = cumsum(Days_of_Medicine_Received) - as.integer(Medicine_Received - first(Medicine_Received))) %>%
  ungroup() %>%
  select(-grp)

#  Medicine_Received Days_of_Medicine_Received Days_of_Medicine_Available
#  <date>                                <dbl>                      <dbl>
#1 2019-01-01                               30                         30
#2 2019-01-20                               30                         41
#3 2019-02-01                               30                         59
#4 2019-06-01                               30                         30
#5 2019-06-15                               30                         46
库(dplyr)
患者接收计划%>%
分组依据(grp=cumsum(收到的药物-滞后(收到的药物,默认值=第一个(收到的药物))>30))%>%
mutate(Days\u of\u Medicine\u Available=cumsum(Days\u of\u Medicine\u Received)-as.integer(Medicine\u Received-first(Medicine\u Received))%>%
解组()%>%
选择(-grp)
#药品收到天数可用药品收到天数可用药品
#                                                        
#1 2019-01-01                               30                         30
#2 2019-01-20                               30                         41
#3 2019-02-01                               30                         59
#4 2019-06-01                               30                         30
#5 2019-06-15                               30                         46

这是一个非常好的想法,谢谢分享。但是,让我们暂时假设答案是否定的——我们没有权利宣布x天后我们可以重置计算,并且必须查看整个历史。有没有一种方法可以查看整个病史来判断患者是否在某些时候“过期”了?这是一个非常好的想法,谢谢分享。但是,让我们暂时假设答案是否定的——我们没有权利宣布x天后我们可以重置计算,并且必须查看整个历史。有没有一种方法可以查看整个病史来判断患者是否在某些时候“逾期”了?