首页 > 解决方案 > 如何在 R 中减去两个 DATES 变量,结果应以天为单位

问题描述

我的数据框中有以下两列,称为Entry_dateDeath_date包含格式为 的日期YYYY/MM/DD。我想减去 like (Death_date-Entry_date = survival_days)。减去Death_dateEntry_date,我想要几天后的结果。我的数据如下所示。

Sample_ID<-c("a1","a2","a3","a4","a5","a6")
Entry_date<-c(2010/04/13, 2008/07/30, 2009/03/06, 2008/08/22, 2009/06/24, 2008/08/26)
Death_date<-c(2007/05/17, 2007/05/16, 2007/05/16, 2007/05/16,2007/05/16, 2010/05/16)
Df<-data.frame(Sample_ID,Entry_date,Death_date)

我想要一个名为 Df$survival_days 的列作为结果变量,如下所示

Sample_ID  Entry_date       Death_date      Df$survival_days   
                                                -1062.00
                                                -441.00
                                                -660.00
                                                -464.00
                                                -770.00
                                                 468.00

我如何在 R 中做到这一点。我的 cox 需要这个变量。回归生存分析。我的真实数据框有大约 10,000 个观察值。

标签: rdataframedatetimecox-regression

解决方案


与适当的单位一起使用difftime并以字符串形式提供日期:

Sample_ID<-c("a1","a2","a3","a4","a5","a6")
Entry_date<-c("2010/04/13", "2008/07/30", "2009/03/06", "2008/08/22", "2009/06/24", "2008/08/26")
Death_date<-c("2007/05/17", "2007/05/16", "2007/05/16", "2007/05/16","2007/05/16", "2010/05/16")
Df<-data.frame(Sample_ID,Entry_date,Death_date)
Df$difference_in_days <- difftime(Df$Death_date, Df$Entry_date, units = "days")

输出

> Df
  Sample_ID Entry_date Death_date difference_in_days
1        a1 2010/04/13 2007/05/17    -1062.0000 days
2        a2 2008/07/30 2007/05/16     -441.0000 days
3        a3 2009/03/06 2007/05/16     -660.0417 days
4        a4 2008/08/22 2007/05/16     -464.0000 days
5        a5 2009/06/24 2007/05/16     -770.0000 days
6        a6 2008/08/26 2010/05/16      628.0000 days

推荐阅读