【问题标题】:How to transform dates in Y-m format without days [duplicate]如何在没有天数的情况下以 Y-m 格式转换日期[重复]
【发布时间】: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


    【解决方案1】:

    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 &lt;- 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"
    

    【讨论】:

    • 就是这样。谢谢!
    【解决方案2】:

    如果我们需要转换为Date 类,则需要一天。所以,我们可以paste 使用其中一个感兴趣的日子,比如 1,然后使用 as.Date

    as.Date(paste0(dates, "-01"))
    

    【讨论】:

    • 知道了,它有效。谢谢!
    猜你喜欢
    • 2023-03-08
    • 2012-07-21
    • 1970-01-01
    • 2021-02-26
    • 2021-09-19
    • 2018-05-25
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多