将日期格式“20150101”转换为2015年1月的R

时间:2015-03-20 13:59:42

标签: r

你们中的任何人都可以帮助将日期从20150101转换为缩写形式Jan-2015吗?

我尝试了以下方法。

x=20150101
as.yearmon(x, "%b-%y")

但是我得到了以下错误

  

charToDate(x)出错:     字符串不是标准的明确格式

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用strptime的组合将字符串转换为日期对象,并格式化为您想要的格式:

date = "20150101"
format(strptime(date,format="%Y%m%d"),"%b-%Y")

答案 1 :(得分:3)

问题中的代码存在两个问题:

  1. 输入格式指定为"%b-%y"但应该是。{ "%y%m"

  2. 我们希望在这里使用as.yearmon.character而不是 as.yearmon.numeric所以输入应该转换为 "character"

  3. 因此,试试这个:

     library(zoo)
     ym <- as.yearmon(as.character(20150101), "%Y%m")
    

    ,并提供:

    > ym
    [1] "Jan 2015"
    

    请注意,"yearmon"个对象在内部存储为年份+分数,其中分数为0表示1月,1月12日表示2月,...,12月12日表示12月。外部表示为缩写月份按照所示的空间和年份。

    上述内容可能已足够但如果不将其转换为格式为"%b-%y""%b-%Y"的字符串,请使用format

    format(ym, "%b-%y")
    ## [1] "Jan-15"
    
    format(ym, "%b-%Y")
    ## [1] "Jan-2015"
    

答案 2 :(得分:2)

使用lubridatezoo个包:

library(lubridate)
library(zoo)

x <- "20150101"

as.yearmon(as.Date(ymd(x)))

[1] "jan 2015"