Ошибка со "стандартной однозначной датой" для преобразования строки в дату в R

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

## 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 ответ

Решение

Неоднозначность вашего призыва к 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")
Другие вопросы по тегам