【问题标题】:Check if for a patient the next admission date is less than previous discharge then make the admission date equal to previous discharge检查患者的下一次入院日期是否小于上一次出院日期,然后使入院日期等于上一次出院日期
【发布时间】:2021-07-08 21:55:55
【问题描述】:

我获得了患者入院和出院日期的数据,但有些患者例如第二次入院时入院日期比第一次出院日期短。我想检查下一次入院日期是否小于上一次出院日期,以使它们相等。这是数据

structure(list(id = c(1, 2, 2, 3, 3, 4), adm = c("2014/08/29", 
"2006/06/14", "2006/08/23", "2007/01/01", "2007/01/03", "2005/07/02"
), disc = c("2014/09/08", "2006/08/31", "2006/08/31", "2007/01/07", 
"2007/01/08", "2005/07/03")), class = "data.frame", row.names = c(NA, 
-6L))

当我们处理我无法共享的原始数据时,我会得到这样的数据,但它适用于这个示例数据。

    df <- data %>% group_by(id) %>% 
  mutate(across(c(adm, disc), as.Date)) %>% 
  mutate(adm = if_else(adm < lag(disc, default = first(adm)), lag(disc), adm))

structure(list(id2 = c(1, 2, 2, 3, 3, 4), adm2 = c("2014/08/29", 
"2014/09/08", "2006/08/31", "2007/01/01", "2007/01/07", "2007/01/08"
), disc2 = c("2014/09/08", "2006/08/31", "2006/08/31", "2007/01/07", 
"2007/01/08", "2005/07/03")), class = "data.frame", row.names = c(NA, 
-6L))

【问题讨论】:

  • 针对不同患者的两种不同标准??首先,您保留了第二个入院日期,而在另一位患者中,您保留了第一个出院日期
  • 对不起,我在那里犯了一个错误。我做了改变。如果下一个入院日期小于上一个出院日期,则使它们相等。它将创建相同的入院和出院。

标签: r


【解决方案1】:
df <- structure(list(id = c(1, 1, 2, 2), adm = c("2006/06/14", "2006/08/23", 
                                           "2007/01/01", "2007/01/03"), disc = c("2006/08/31", "2006/08/31", 
                                                                                 "2007/01/07", "2007/01/08")), class = "data.frame", row.names = c(NA, 
                                                                                                                                                   -4L))
library(dplyr, warn.conflicts = F)

df %>% group_by(id) %>%
  mutate(across(c(adm, disc), as.Date)) %>%
  mutate(adm = if_else(adm < lag(disc, default = first(adm)), lag(disc), adm))
#> # A tibble: 4 x 3
#> # Groups:   id [2]
#>      id adm        disc      
#>   <dbl> <date>     <date>    
#> 1     1 2006-06-14 2006-08-31
#> 2     1 2006-08-31 2006-08-31
#> 3     2 2007-01-01 2007-01-07
#> 4     2 2007-01-07 2007-01-08

reprex package (v2.0.0) 于 2021-07-08 创建

【讨论】:

  • 这适用于我的样本数据,但在我的实际数据中,我认为由于某些原因 group_by(id) 不起作用,因为我的出院日期大于下一个患者的入院日期.
  • @kamrankhan 请修改您的数据以便更好地理解问题
  • 成功了。问题是我也加载了 plyr 包,在分离然后使用 dplyr 后效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 2019-09-25
相关资源
最近更新 更多