r - 根据 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)
我怎么能编码呢?
非常感谢您提前!!:)
解决方案
你可以试试 :
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)
推荐阅读
- c# - Xamarin 中的随机图像
- function - 如何通过点击原生反应中的 touchableOpacity 来开始倒计时?
- c# - 如何访问另一个查询 LINQPad 的成员?
- oauth - 如何使用 instagram API 登录
- python - 如何在 Keras DQN 中实现梯度上升
- rest - 用于 Google Fit REST 心率查询的数据源 ID 是什么?
- python-3.x - 通过 QTableWidget 上的动态按钮更新和删除 MySQLite 数据库
- android - 尝试从 Android 应用程序 Chromecast URL 时如何检测 URL 错误?
- typescript - Vue.js 数据变量不存在
- python - 在不使用numpy的情况下查找矩阵中所有行的列总和