R 如何计算再入院天数
在下面的数据框架中,我想从每个id中创建一个新的列,列出从出院日期到下一个入院日期之间的天数。 我知道如何通过减去行之间或列之间的日期来获得天数,但在这种情况下,我需要减去列之间和行之间的日期(对角)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
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
。谢谢!我试过了,成功地解决了我的问题谢谢!我尝试了这个,并成功地解决了我的问题