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

ste*_*eve 10 r date gsub

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

Sep/2012
Aug/2012
Jul/2012
Run Code Online (Sandbox Code Playgroud)

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

as.Date(dates, "%b/%Y")
Run Code Online (Sandbox Code Playgroud)

where %b表示月份缩写,但这只返回NAs.我究竟做错了什么?

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

01/Sep/2012
01/Aug/2012
01/Jul/2012
Run Code Online (Sandbox Code Playgroud)

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

Rei*_*son 11

您正在寻找as.yearmon()动物园包.鉴于你的约会

dates <- c("Sep/2012","Aug/2012","Jul/2012")
Run Code Online (Sandbox Code Playgroud)

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

require(zoo)
dates1 <- as.yearmon(dates, format = "%b/%Y")
dates1
Run Code Online (Sandbox Code Playgroud)

这使

R> dates1
[1] "Sep 2012" "Aug 2012" "Jul 2012"
Run Code Online (Sandbox Code Playgroud)

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

R> as.Date(dates1)
[1] "2012-09-01" "2012-08-01" "2012-07-01"
Run Code Online (Sandbox Code Playgroud)

这将是一种更简单的方式来获得你做过的事情gsub().有一个frac参数可以控制每月组件应该在多大程度上:

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

但这可能对你来说已经足够了.

如果你真的只想要存储日期,那么它们就不是真正的日期,但是如果你乐意在zoo包中工作,那么这个"yearmon"类可以用作zoo一个时间序列对象的索引.