【问题标题】:How to combine two DATES variables in R data frame如何在 R 数据框中组合两个 DATES 变量
【发布时间】:2020-07-01 10:16:01
【问题描述】:

我有一个如下的数据框

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

我需要制作两列。此数据框中的一列称为CVD_date。我想要的是在Heart_attackStroke 中,事件发生得更早,“日期”应该包含在这个变量中。例如,我正在寻找以下输出。 如果CVD_date 中报告的事件属于Heart_attack,则第二列CVD 应显示1,否则应显示2。 例如,我正在寻找以下输出。

Sample ID  Heart_attack  Stroke        CVD_date         CVD
 a1         2010/04/13   2007/05/17    2007/05/17        2
 a2         2008/07/30   2009/05/16    2008/07/30        1
 a3         2009/03/06   2007/05/16    2007/05/16        1

如何在 R 中做到这一点?

【问题讨论】:

    标签: r dataframe date variables


    【解决方案1】:

    您可以使用pmin 获得Heart_attackStroke 日期之间的最小值。对于CVD,我们比较两个日期,将逻辑值转换为整数并加1,如果Stroke 大于Heart_attack 日期则为1,否则为2..

    library(dplyr)
    
    DF %>%
      mutate(across(-1, lubridate::ymd), 
             CVD_date = pmin(Heart_attack, Stroke), 
             CVD = as.integer(Heart_attack > Stroke) + 1)
    
    #  Sample_ID Heart_attack     Stroke   CVD_date CVD
    #1        a1   2010-04-13 2007-05-17 2007-05-17   2
    #2        a2   2008-07-30 2009-05-16 2008-07-30   1
    #3        a3   2009-03-06 2007-05-16 2007-05-16   2
    #4        a4   2008-08-22 2007-05-16 2007-05-16   2
    #5        a5   2009-06-24 2007-05-16 2007-05-16   2
    #6        a6   2008-08-26 2010-05-16 2008-08-26   1
    

    在旧版本中你可以这样做:

    DF %>%
      mutate_at(-1, lubridate::ymd) %>%
      mutate(CVD_date = pmin(Heart_attack, Stroke), 
             CVD = as.integer(Heart_attack > Stroke) + 1)
    

    【讨论】:

    • 您好,谢谢。但是哪个包包含“跨越”这个功能。 ?我收到错误消息。
    • 它出现在新的dplyr 中。你可以通过install.packages('dplyr') 来安装它
    • 你能不能分别为每个变量写两个命令,以便我更好地理解。
    • 包“dplyr”不可用(适用于 R 版本 3.6.3)
    • 我已经更新了适用于旧版本 dplyr 的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多