12

我正在处理月度数据,并有一个日期字符向量,格式为:

Sep/2012
Aug/2012
Jul/2012

等等,回到 1981 年。我尝试过使用

as.Date(dates, "%b/%Y")

其中%b表示月份缩写,但这仅返回 NA。我究竟做错了什么?

注意:我已经找到了一种解决方法gsub(),可以在每个条目前添加“01/”,如下所示:

01/Sep/2012
01/Aug/2012
01/Jul/2012

然后as.Dates()有效,但这似乎有点不雅,而且无论如何也不是严格准确的。

4

1 回答 1

18

as.yearmon()您正在寻找zoo包。鉴于您的日期

dates <- c("Sep/2012","Aug/2012","Jul/2012")

我们加载包并转换为"yearmon"

require(zoo)
dates1 <- as.yearmon(dates, format = "%b/%Y")
dates1

这使

R> dates1
[1] "Sep 2012" "Aug 2012" "Jul 2012"

"Date"您可以使用该as.Date()方法强制到类的对象

R> as.Date(dates1)
[1] "2012-09-01" "2012-08-01" "2012-07-01"

这将是通过gsub(). 有一个frac论点可以控制天组件应该在一个月内有多远:

R> as.Date(dates1, frac = 0.5)
[1] "2012-09-15" "2012-08-16" "2012-07-16"

但这对你来说可能还不够。

如果您真的只想要按原样存储日期,那么它们并不是真正的日期,但如果您乐于在zoo包中工作,那么"yearmon"该类可以用作zoo时间序列对象的索引。

于 2012-11-14T20:09:08.640 回答