使用as.Date格式化月份缩写

时间:2012-11-14 19:41:13

标签: r date gsub

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

Sep/2012
Aug/2012
Jul/2012

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

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

其中%b表示月份缩写,但这只返回NAs。我做错了什么?

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

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

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

1 个答案:

答案 0 :(得分:9)

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

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对象的索引,这是一个时间序列。