我有一个如下所示的数据向量:
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
我怀疑问题在于没有指定日期。
如何解决这个问题呢?
答案 0 :(得分:5)
如果我们需要转换为Date
课程,则需要一天。因此,我们paste
可以感兴趣的一天,例如1,并使用as.Date
as.Date(paste0(dates, "-01"))
答案 1 :(得分:3)
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"