R中字符串到日期的转换带有“标准明确日期”的错误

问题描述 投票:1回答:1

因此,我正在尝试使用此代码,该代码过去曾与其他数据整理任务一起使用,没有错误:

## 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

我无法找到有关为什么将数据格式化的答案,因此,在不更改原始管理数据集的情况下如何解决此问题有何想法?

tidyverse date-format date-formatting as.date data-wrangling
1个回答
2
投票

您对as.Date的呼叫中的模棱两可是指日期或月份是第一位的。要解决此问题,可以使用formatas.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")
© www.soinside.com 2019 - 2024. All rights reserved.