根据行日期生成列

generate columns based on row dates

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

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)           

这样做的最佳方法是什么?

谢谢

一个选项是使用 rowwise 遍历行并在将日期列转换为 Date class[= 后得到 max 'date' 15=]

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