r-根据行日期生成列



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

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类后获得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

最新更新