首页 > 解决方案 > 根据 R 中的条件选择日期

问题描述

我的目标是根据 2 个日期列的条件创建一个列。数据集如下所示:

df <- data.frame(PatientID = c("3454","345","5","345","567","79"),
                 date_of_covid_test = c(2020-04-02, 2000-03-01, 2000-01-01, 2020-11-03, 2020-04-02, 2020-12-05),
                 date_of_hospitalization = c(2020-03-27, 2000-03-25, 2000-03-01, 2020-03-10, NA, NA), stringsAsFactors = F)

我要创建的新列名为"hospitalized_due_to_covid"。它基于在测试前 1 周(“date_of_covid_test”)和测试后 1 个月之间住院(“date_of_hospitalization”) 。

如果有一个NA,那么结果将是一个FALSE

我在此处发布的示例的结果将是:

hospitalized_due_to_covid = c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE)

我怎么能编码呢?

非常感谢您提前!!:)

标签: rdateif-statementconditional-statementsconditional-formatting

解决方案


你可以试试 :

library(lubridate)
library(dplyr)

df %>%
  mutate(across(c(date_of_covid_test, date_of_hospitalization), as.Date), 
         hospitalized_due_to_covid = date_of_hospitalization >= (date_of_covid_test - 7) & 
                                        date_of_hospitalization <= (date_of_covid_test %m+% months(1)), 
         hospitalized_due_to_covid = replace(hospitalized_due_to_covid, is.na(hospitalized_due_to_covid), FALSE))

#  PatientID date_of_covid_test date_of_hospitalization hospitalized_due_to_covid
#1      3454         2020-04-02              2020-03-27                      TRUE
#2       345         2000-03-01              2000-03-25                      TRUE
#3         5         2000-01-01              2000-03-01                     FALSE
#4       345         2020-11-03              2020-03-10                     FALSE
#5       567         2020-04-02                    <NA>                     FALSE
#6        79         2020-12-05                    <NA>                     FALSE

您的数据在哪里:

df <- data.frame(PatientID = c("3454","345","5","345","567","79"),
                 date_of_covid_test = c("2020-04-02", "2000-03-01", "2000-01-01", "2020-11-03", "2020-04-02", "2020-12-05"),
                 date_of_hospitalization = c("2020-03-27", "2000-03-25", "2000-03-01", "2020-03-10", NA, NA), stringsAsFactors = F)

推荐阅读