2009-01-24 35 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應該是縮寫的月份名稱,但我猜這裏可能存在一些問題。

我該如何解決這個問題? Linux下t2.6.27-9泛型#

我跑,R 1 SMP


更新:挖一個深一點我覺得這個問題是在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" 

我想我可以ç以及對數據進行預處理,但在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,所以我會使用它。 – 2009-01-25 16:09:46

相關問題