Разные результаты для одной и той же строки даты с использованием пакета lubridate в R

У меня есть вектор строк:

str <- c("01-", "01-just researching", "01-1-3 months", "01-immediately", "01-4-6 months", "01-more than 12 months", "01-7-12 months")

Если я проанализирую его, используя parse_date_time из пакета lubridate, он получит другой результат, если я проанализирую только первые 6 строк. Почему?

parse_date_time(str, "dmy")
[1] NA               NA               "2003-01-01 UTC" NA               "2006-04-01 UTC"
[6] NA               "2012-07-01 UTC"

parse_date_time(str[1:6], "dmy")
[1] NA NA NA NA NA NA

person Bamqf    schedule 05.08.2015    source источник
comment
Почему вы пытаетесь разобрать их на даты? str мне вообще не кажется свиданием.   -  person Rich Scriven    schedule 05.08.2015
comment
@RichardScriven Это некоторые типичные грязные данные в большом наборе реальных данных, большинство из которых более отформатированы, например, 01 мая 13, затем я сталкиваюсь с этой странной ситуацией, поэтому мне любопытно, что произошло.   -  person Bamqf    schedule 05.08.2015
comment
Вы можете сначала попытаться преобразовать их в правильный формат. Похоже, вы перепутали парсер :)   -  person Rich Scriven    schedule 05.08.2015
comment
parse_date_time по моему опыту темпераментен. Кажется, он пробует разные форматы в зависимости от того, насколько часто они присутствуют в векторе. Поэтому взятие подмножества меняет результат. Попытка автоматизировать беспорядочную исправление даты кажется адской задачей, и я восхищаюсь любым, кто пытается это сделать, но я думаю, что всегда будет какая-то ручная обработка.   -  person thelatemail    schedule 05.08.2015


Ответы (1)


Есть функция guess_formats, которая так любезно объясняет, какие элементы соответствуют шаблону. Как видите, работает только последняя строка:

guess_formats(str, "dmy", print_matches = TRUE)

#                               dmy              
# [1,] "01-"                    ""               
# [2,] "01-just researching"    ""               
# [3,] "01-1-3 months"          ""               
# [4,] "01-immediately"         ""               
# [5,] "01-4-6 months"          ""               
# [6,] "01-more than 12 months" ""               
# [7,] "01-7-12 months"         "%d-%m-%y months"

Думаю, остальное очевидно.

person bergant    schedule 05.08.2015