因此,我正在尝试此代码,我过去曾将其用于其他数据整理任务,且没有任何错误:## 根据每个人的 start_date 创建一个 age_at_enrollment 变量(即我想要...
因此,我正在尝试此代码,我过去曾将其用于其他数据整理任务,并且没有任何错误:
## Create an age_at_enrollment variable, based on the start_date per individual (i.e. I want to know an individual's age, when they began their healthcare job).
complete_dataset_1 = complete_dataset %>% mutate(age_at_enrollment = (as.Date(start_date)-as.Date(birth_date))/365.25)
但是,我一直收到此错误消息:\'charToDate(x)中的错误:字符串不是标准的明确格式\'
我认为发生此错误是因为在我使用的管理数据集中,start_date 和birth_date变量的格式很奇怪:
start_date birth_date
2/5/07 0:00 2/28/1992 0:00
我找不到为什么数据会被这样格式化的答案,那么在不改变原始管理数据集的情况下,如何解决这个问题呢?
调用 时存在歧义 as.Date
,即日期或月份是否在前。要解决此问题,您可以使用 format
参数 as.Date
:
complete_dataset_1 = complete_dataset
%>% mutate(age_at_enrollment = (
as.Date(start_date, format="%m/%d/%Y") -
as.Date(birth_date, format="%m/%d/%Y")) / 365.25)
计算年份差异并处理闰年边缘情况的更精确的方法是使用以下 lubridate
包:
library(lubridate)
complete_dataset_1 = complete_dataset
%>% mutate(age_at_enrollment = time_length(difftime(
as.Date(start_date, format="%m/%d/%Y"),
as.Date(birth_date, format="%m/%d/%Y")), "years")