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 回答