因此,我正在尝试使用此代码,该代码过去曾与其他数据整理任务一起使用,没有错误:
## 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)
计算years年的差异(处理the年边缘情况的更精确方法是使用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")