【问题标题】:generate columns based on row dates根据行日期生成列
【发布时间】:2021-06-20 09:48:33
【问题描述】:

我需要根据日期创建一个列,这是我的数据集:

test <- data.frame(PatientID = c("1000285","1000317", "1000399","10006485","10995700317" ), dateMI = c(NA, NA, "2008-10-26", "2008-10-26", NA),dateA = c(NA, NA,"2008-10-26", "2010-11-06", "2019-02-14"), dateCVA = c("2014-02-04", "2001-02-27", NA, NA, "2020-02-14"),  stringsAsFactors = F)
 

我需要创建一个名为dateEVENT 的额外列,其中包含dateMIdateAdateCVA 的最新日期。

因此,新数据集实际上如下所示:

test <- data.frame(PatientID = c("1000285","1000317", "1000399","10006485","10995700317" ), dateMI = c(NA, NA, "2008-10-26", "2008-10-26", NA),dateA = c(NA, NA,"2008-10-26", "2010-11-06", "2019-02-14"), dateCVA = c("2014-02-04", "2001-02-27", NA, NA, "2020-02-14"), dateEVENT = c("2014-02-04", "2001-02-27", "2008-10-26", "2010-11-06", "2020-02-14"),  stringsAsFactors = F)           

最好的方法是什么?

谢谢

【问题讨论】:

    标签: r date dplyr conditional-statements multiple-columns


    【解决方案1】:

    一种选择是循环使用rowwise 的行并在将日期列转换为Date 类后获取max“日期”

    library(dplyr)
    test1 <- test %>% 
          mutate(across(starts_with('date'), as.Date)) %>%
          rowwise %>% 
          mutate(dateEVENT = max(c_across(starts_with('date')), 
            na.rm = TRUE)) %>%
          ungroup
    

    -输出

    test1
    # A tibble: 5 x 5
    #  PatientID   dateMI     dateA      dateCVA    dateEVENT 
    #  <chr>       <date>     <date>     <date>     <date>    
    #1 1000285     NA         NA         2014-02-04 2014-02-04
    #2 1000317     NA         NA         2001-02-27 2001-02-27
    #3 1000399     2008-10-26 2008-10-26 NA         2008-10-26
    #4 10006485    2008-10-26 2010-11-06 NA         2010-11-06
    #5 10995700317 NA         2019-02-14 2020-02-14 2020-02-14
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多