Convert Date to year month representation

date, lubridate, posixct, r

Solution

Using functions from the `lubridate` package can be almost twice as fast as your function :

mydate = as.Date(rep("2012-01-01",1000))
library(lubridate)
library(microbenchmark)
microbenchmark(get_year_month(mydate),
               year(mydate)*100+month(mydate))

gives :

R> Unit: milliseconds
                               expr      min       lq   median       uq
             get_year_month(mydate) 2.150296 2.188370 2.218176 2.285973
 year(mydate) * 100 + month(mydate) 1.220016 1.228129 1.239704 1.284568

Problem

I have a `Date`, and am interested in representing it as an integer of `yyyymm` form. Currently, I do: ``` get_year_month <- function(d) { return(as.integer(format(d, "%Y%m")))} mydate = seq.Date(from = as.Date("2012-01-01"), to = as.Date("5012-01-01"), by = 1) system.time(ym <- get_year_month(mydate)) # user system elapsed # 5.972 0.974 6.951 ``` This is very slow for large datasets. Is there a faster way? Please provide timings for your answers so they can be easily compared. Use the above example.

Original source