根据行日期生成列
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
的额外列,其中包含来自 dateMI
、dateA
和 dateCVA
的最新日期。
因此,新数据集实际上如下所示:
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
我需要根据日期创建一个列,这是我的数据集:
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
的额外列,其中包含来自 dateMI
、dateA
和 dateCVA
的最新日期。
因此,新数据集实际上如下所示:
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