3

次の形式の日付を含む時系列をインポートしました。

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

これにより、次の結果が得られます。

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

May が翻訳されたので、明らかにロケールが考慮されます。

ドキュメントによると、 %b は省略された月名である必要がありますが、そこに問題がある可能性があると思います。

これを修正するにはどうすればよいですか?

Linux t2.6.27-9-generic #1 SMP で R を実行しています


更新: もう少し深く掘り下げると、問題は LC_TIME 定義にあることがわかりました。適切な略語は次の形式です。

"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"

ありがとう!

4

1 に答える 1

2

私が見つけた解決策に最も近いのは、データを複数回繰り返して、月の名前を解析可能なものに置き換えることです。

これが最善の解決策かどうかはわかりません。

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")
于 2009-01-24T22:47:41.913 に答える