Convert numeric date format (YYYYMMDD; 20150101) into Year-Month

前端 未结 3 1945
你的背包
你的背包 2021-01-20 02:37

Can anyone of you help in converting the date from 20150101 to abbreviated form Jan-2015 ?

I tried the below method.

x = 20         


        
相关标签:
3条回答
  • 2021-01-20 03:12

    You can use a combination of strptime to convert the string to a date object and format to format to what you want:

    date = "20150101"
    format(strptime(date,format="%Y%m%d"),"%b-%Y")
    
    0 讨论(0)
  • 2021-01-20 03:22

    Using lubridate and zoo packages:

    library(lubridate)
    library(zoo)
    
    x <- "20150101"
    
    as.yearmon(as.Date(ymd(x)))
    
    [1] "jan 2015"
    
    0 讨论(0)
  • 2021-01-20 03:25

    There are two problems with the code in the question:

    1. the input format is specified as "%b-%y" but should be "%y%m"

    2. we wish to use as.yearmon.character here rather than as.yearmon.numeric so the input should be converted to "character"

    Therefore, try this:

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

    giving:

    > ym
    [1] "Jan 2015"
    

    Note that "yearmon" objects are internally stored as year + fraction where fraction is 0 for Jan, 1/12 for Feb, ..., 11/12 for Dec. Externally they are rendered as an abbreviated month followed by a space and the year as shown.

    The above may be sufficient but if not to convert it to a character string with format "%b-%y" or "%b-%Y" use format:

    format(ym, "%b-%y")
    ## [1] "Jan-15"
    
    format(ym, "%b-%Y")
    ## [1] "Jan-2015"
    
    0 讨论(0)
提交回复
热议问题