R 如何计算再入院天数

R 如何计算再入院天数,r,date,datetime,R,Date,Datetime,在下面的数据框架中,我想从每个id中创建一个新的列,列出从出院日期到下一个入院日期之间的天数。 我知道如何通过减去行之间或列之间的日期来获得天数,但在这种情况下,我需要减去列之间和行之间的日期(对角) df您可以使用shift从上一行获取值 library(data.table) df[, DayReadmission := as.numeric(admission_date - shift(discharge_date)), id] df # id admission_date disc

在下面的数据框架中,我想从每个id中创建一个新的列,列出从出院日期到下一个入院日期之间的天数。 我知道如何通过减去行之间或列之间的日期来获得天数,但在这种情况下,我需要减去列之间和行之间的日期(对角)


df您可以使用
shift
从上一行获取值

library(data.table)
df[, DayReadmission := as.numeric(admission_date - shift(discharge_date)), id]

df
#   id admission_date discharge_date DayReadmission
#1:  A     2017-01-01     2017-01-04             NA
#2:  A     2017-02-01     2017-02-05             28
#3:  A     2017-05-01     2017-05-06             85
#4:  B     2017-01-01     2017-01-03             NA
#5:  B     2017-05-01     2017-05-09            118
#6:  B     2017-10-01     2017-10-04            145
#7:  C     2017-01-01     2017-01-06             NA
#8:  C     2017-02-01     2017-02-01             26

您可以使用
shift
从上一行获取值

library(data.table)
df[, DayReadmission := as.numeric(admission_date - shift(discharge_date)), id]

df
#   id admission_date discharge_date DayReadmission
#1:  A     2017-01-01     2017-01-04             NA
#2:  A     2017-02-01     2017-02-05             28
#3:  A     2017-05-01     2017-05-06             85
#4:  B     2017-01-01     2017-01-03             NA
#5:  B     2017-05-01     2017-05-09            118
#6:  B     2017-10-01     2017-10-04            145
#7:  C     2017-01-01     2017-01-06             NA
#8:  C     2017-02-01     2017-02-01             26
这个怎么样:

library(tidyverse)
df <- df %>% 
  group_by(id) %>% 
  mutate(DayReadmission = admission_date - lag(discharge_date))
库(tidyverse)
df%
分组依据(id)%>%
突变(日再入院=入院日期-延迟(出院日期))
这个怎么样:

library(tidyverse)
df <- df %>% 
  group_by(id) %>% 
  mutate(DayReadmission = admission_date - lag(discharge_date))
库(tidyverse)
df%
分组依据(id)%>%
突变(日再入院=入院日期-延迟(出院日期))

由于您是R新手,这是“老派”方法

df$DayReadmission <- unlist(lapply(split(df, df$id), 
       FUN=function(x) x$admission_date - lag(x$discharge_date)))

#  id admission_date discharge_date DayReadmission
#1  A     2017-01-01     2017-01-04             NA
#2  A     2017-02-01     2017-02-05             28
#3  A     2017-05-01     2017-05-06             85
#4  B     2017-01-01     2017-01-03             NA
#5  B     2017-05-01     2017-05-09            118
#6  B     2017-10-01     2017-10-04            145
#7  C     2017-01-01     2017-01-06             NA
#8  C     2017-02-01     2017-02-01             26

df$dayreaddmission因为您是R新手,所以这是“老派”方法

df$DayReadmission <- unlist(lapply(split(df, df$id), 
       FUN=function(x) x$admission_date - lag(x$discharge_date)))

#  id admission_date discharge_date DayReadmission
#1  A     2017-01-01     2017-01-04             NA
#2  A     2017-02-01     2017-02-05             28
#3  A     2017-05-01     2017-05-06             85
#4  B     2017-01-01     2017-01-03             NA
#5  B     2017-05-01     2017-05-09            118
#6  B     2017-10-01     2017-10-04            145
#7  C     2017-01-01     2017-01-06             NA
#8  C     2017-02-01     2017-02-01             26

df$DayReadmission您正在寻找
lag
。您正在寻找
lag
。谢谢!我试过了,成功地解决了我的问题谢谢!我尝试了这个,并成功地解决了我的问题