Ошибка со "стандартной однозначной датой" для преобразования строки в дату в 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")