2009-01-24 3 views
2

Я импортировал временные ряды с датами в следующем формате:Преобразование локализованного даты формы 12-ОКТ-2007

test = c("11-Feb-01","12-Feb-01","01-Mai-08") 

Это дает:

> as.Date(test, "%d-%b-%y") 
[1] NA   NA   "2008-05-01" 

С мая был переведен он, очевидно, учитывает локаль.

В соответствии с документами,% b должно быть сокращенным именем месяца, но я думаю, что там может быть какая-то проблема.

Как я могу это исправить?

Я бег R под Linux t2.6.27-9-родовой # 1 SMP


Update: Рытье немного глубже я считаю, что проблема заключается в определении LC_TIME, где соответствующие abbrivations являются формы:

"jan.","feb.","mars", "apr", "mai", "juni", "juli", "aug.","sep.","okt.","nov.", "des." 

в то время как мои данные содержат:

"Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des" 

Я думаю, я мог бы с onsider предварительной обработки данных, но гладкий способ сделать это в R будет наиболее желанным.


Это работает рода-, но не так элегантно:

> as.Date(gsub("Feb","feb.",test), "%d-%b-%y") 
[1] "2001-02-11" "2008-02-12" "2008-05-01" 

Спасибо!

ответ

1

Ближайшая вещь, которую я нашел для решения, состоит в том, чтобы сделать несколько итераций над данными, чтобы заменить имена месяцев на что-то, что может быть проанализировано.

Я не уверен, что это лучшее решение.

setwd("/home/tovare/Data") 

v <- read.csv2("valuta_dag.sdv", 
    na.strings = c("NA","ND"), 
    header = TRUE, sep=";", skip=2) 

v$Dato <- gsub("Jan","01",v$Dato) 
v$Dato <- gsub("Feb","02",v$Dato) 
v$Dato <- gsub("Mar","03",v$Dato) 
v$Dato <- gsub("Apr","04",v$Dato) 
v$Dato <- gsub("Mai","05",v$Dato) 
v$Dato <- gsub("Jun","06",v$Dato) 
v$Dato <- gsub("Jul","07",v$Dato) 
v$Dato <- gsub("Aug","08",v$Dato) 
v$Dato <- gsub("Sep","09",v$Dato) 
v$Dato <- gsub("Okt","10",v$Dato) 
v$Dato <- gsub("Nov","11",v$Dato) 
v$Dato <- gsub("Des","12",v$Dato) 

v$Dato <- as.Date(v$Dato,"%d-%m-%y") 
+1

Я думаю, что вы правы. Вы можете либо изменить определения LC_TIME, либо изменить свои данные. Я большой поклонник не возиться с LC_TIME, если нет другого обходного пути. У вас есть альтернатива домогательству LC_TIME, поэтому я буду использовать его. –

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