2016-02-18 3 views
2

У меня возникли проблемы с форматированием следующей даты с помощью lubridate. Я не женат на лубридатном подходе, но может кто-то порекомендовать хороший способ отформатировать эти неуклюжие сентябрьские даты?Форматы форматирования нечетных дат с lubridate

library(lubridate) 

df <- data.frame(y=1:5, Date=c("Sept 1 2002","Sept 7 2002","Sept 9 2002","Sept 20 2002","Sept 21 2002")) 

Я не ожидал, чтобы это работало:

df$Date2=mdy(df$Date) 

Но я не понимаю, почему это один не работает:

df$Date2=parse_date_time(df$Date, "%b %d %Y") 

Есть идеи?

ответ

2

Он будет работать, если мы сопоставим аббревиатуры, как в month.abb. Один из вариантов - удалить 't' в 'Sept', используя sub.

mdy(sub('(...).', '\\1', df$Date)) 
#[1] "2002-09-01 UTC" "2002-09-07 UTC" "2002-09-09 UTC" "2002-09-20 UTC" "2002-09-21 UTC" 

и

month.abb 
#[1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec" 

Если мы посмотрим на ?strptime

% B: Сокращенное название месяца в текущей локали на этой платформе. (также соответствует полному имени на входе: в некоторых местах нет аббревиатуры названий.)

+1

Я всегда забыл про саб. – boshek

Смежные вопросы