【发布时间】:2016-08-28 19:53:00
【问题描述】:
我有一个如下所示的数据向量:
dates<-c("2014-11", "2014-12", "2015-01", "2015-02", "2015-03", "2015-04")
我正在尝试将其转换为可识别的日期格式,但没有成功:
as.Date(dates,"%Y-%m")
[1] NA NA NA NA NA NA
我怀疑问题在于没有指定日期。
有什么办法可以解决这个问题吗?
【问题讨论】:
标签: r
我有一个如下所示的数据向量:
dates<-c("2014-11", "2014-12", "2015-01", "2015-02", "2015-03", "2015-04")
我正在尝试将其转换为可识别的日期格式,但没有成功:
as.Date(dates,"%Y-%m")
[1] NA NA NA NA NA NA
我怀疑问题在于没有指定日期。
有什么办法可以解决这个问题吗?
【问题讨论】:
标签: r
zoo 包有一个很好的接口,它允许存储年月数据和一个as.Date 方法来强制到一个Date 对象。例如:
library("zoo")
dates <- c("2014-11", "2014-12", "2015-01", "2015-02", "2015-03", "2015-04")
将字符向量或年月转换为yearmon 的函数是as.yearmon。第二个参数是各个字符串中日期部分的格式。我这里用
%Y 有世纪的年份%m 以十进制表示月份-
.
yrmo <- as.yearmon(dates, "%Y-%m")
这给了
> yrmo
[1] "Nov 2014" "Dec 2014" "Jan 2015" "Feb 2015" "Mar 2015" "Apr 2015"
这实际上是默认设置,因此您可以完全省略格式部分,例如yrmo <- as.yearmon(dates)
要转换为Date 类对象,使用as.Date 方法
> as.Date(yrmo)
[1] "2014-11-01" "2014-12-01" "2015-01-01" "2015-02-01" "2015-03-01"
[6] "2015-04-01"
此方法有第二个参数frac,指定它允许您说明您希望每个生成的Date 元素在月份中的距离(多少天作为月份长度的一部分,以天为单位)
> as.Date(yrmo, frac = 0.5)
[1] "2014-11-15" "2014-12-16" "2015-01-16" "2015-02-14" "2015-03-16"
[6] "2015-04-15"
【讨论】:
如果我们需要转换为Date 类,则需要一天。所以,我们可以paste 使用其中一个感兴趣的日子,比如 1,然后使用 as.Date
as.Date(paste0(dates, "-01"))
【讨论】: