Ошибка со «стандартной однозначной датой» для преобразования строки в дату в R - PullRequest
1 голос
/ 22 марта 2020

Итак, я пытаюсь этот код, который я использовал в прошлом с другими задачами обработки данных без ошибок:

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

Я не мог найти ответ относительно того, почему данные отформатированы таким образом, поэтому есть какие-нибудь мысли о том, как решить эту проблему, не изменяя исходный набор административных данных?

1 Ответ

2 голосов
/ 22 марта 2020

Неопределенность в вашем звонке на 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")
...