如何在没有天的情况下以Ym格式转换日期

Opo*_*sum 3 r

我有一个如下所示的数据向量:

dates<-c("2014-11", "2014-12", "2015-01", "2015-02", "2015-03", "2015-04")
Run Code Online (Sandbox Code Playgroud)

我试图将其转换为可识别的日期格式,但没有运气:

as.Date(dates,"%Y-%m")
[1] NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)

我怀疑问题在于没有指定日期.

如何解决这个问题呢?

akr*_*run 6

如果我们需要转换为Date课程,则需要一天.因此,我们可以paste在感兴趣的日子之一,比如1,并使用as.Date

as.Date(paste0(dates, "-01"))
Run Code Online (Sandbox Code Playgroud)


Rei*_*son 5

动物园包有一个漂亮的界面,这一点,它允许存储年月数据和as.Date强迫方法的Date对象。例如:

library("zoo")
dates <- c("2014-11", "2014-12", "2015-01", "2015-02", "2015-03", "2015-04")
Run Code Online (Sandbox Code Playgroud)

将字符向量或年月转换为 a 的yearmon函数是as.yearmon。第二个参数是各个字符串中日期部分的格式。这里我用

  • %Y 一年与世纪
  • %m 以十进制表示的月份
  • 用文字分隔 -

.

yrmo <- as.yearmon(dates, "%Y-%m")
Run Code Online (Sandbox Code Playgroud)

这给

> yrmo
[1] "Nov 2014" "Dec 2014" "Jan 2015" "Feb 2015" "Mar 2015" "Apr 2015"
Run Code Online (Sandbox Code Playgroud)

这实际上是默认设置,因此您可以完全省略格式部分,例如 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"
Run Code Online (Sandbox Code Playgroud)

此方法具有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"
Run Code Online (Sandbox Code Playgroud)