2012-02-17 1 views
3

Как преобразовать следующие символьные переменные в даты?Convert «Jan.2008» to date variable

strDates <- c("Jan.2008", "Feb.2008") 
str(strDates) 
chr [1:2] "Jan.2008" "Feb.2008" 

dates <- as.Date(strDates, "%b %Y") 
str(dates) 
Date[1:2], format: NA NA 

Любая помощь будет принята с благодарностью

+1

Если вы имеете дело с месяцами и на самом деле не относится, вы можете быть лучше использовать класс yearmon найти d в пакете зоопарка, в этом случае вам не нужно иметь дело с днями месяца в первую очередь: 'as.yearmon (strDates,"% b.% Y ")' –

ответ

1

Date требует день элемента, так что вы можете добавить, что к входной строке с paste:

full.dates <- paste("01", strDates, sep = ".") 

Укажите шаблон правильно, в том числе разделителей токенов:

as.Date(full.dates, "%d.%b.%Y") 
[1] "2008-01-01" "2008-02-01" 
+0

Большое спасибо – MikeTP

2

Сформировать действительная дата ', необходимо также день, который ваши данные недоставало. Таким образом, мы добавим один, и мы просто использовать произвольный день (здесь: первое число месяца):

R> strDates <- c("Jan.2008", "Feb.2008") 
R> strptime(paste("01", strDates), "%d %b.%Y") 
[1] "2008-01-01" "2008-02-01" 
R> 
+0

Большое спасибо. – MikeTP

+0

Кто-нибудь знает, имеет ли 'lubridate' какую-либо функцию преобразования, которая предполагает« день = 1 »в отсутствие дневного поля? –