r - Convert quarter/year format to a date -


i created function coerce vector of quarters-years format vector of dates.

.quarter_to_date(c("q1/13","q2/14")) [1] "2013-03-01" "2014-06-01" 

this code of function.

.quarter_to_date <-   function(x){     ll <- strsplit(gsub('q([0-9])[/]([0-9]+)','\\1,\\2',x),',')      res <- lapply(ll,function(x){       m <- as.numeric(x[1])*3       m <- ifelse(nchar(m)==1,paste0('0',m),as.character(m))       as.date(paste(x[2],m,'01',sep='-'),format='%y-%m-%d')      })     do.call(c,res)   } 

my function works fine looks long , little bit complicated. think should done in other packages( lubridate example) can't find it. can me simplify code please?

1) zoo package has "yearqtr" class. convert , "date" class:

library(zoo) x <- c("q1/13","q2/14")  as.date(as.yearqtr(x, format = "q%q/%y")) ## [1] "2013-01-01" "2014-04-01" 

2) works last day of month instead of first:

as.date(as.yearqtr(x, format = "q%q/%y"), frac = 1) ## [1] "2013-03-31" "2014-06-30" 

3) consider not converting "date" class @ , using "yearqtr" class directly:

as.yearqtr(x, format = "q%q/%y") ## [1] "2013 q1" "2014 q2" 

Comments

Popular posts from this blog

python - No exponential form of the z-axis in matplotlib-3D-plots -

php - Best Light server (Linux + Web server + Database) for Raspberry Pi -

c# - "Newtonsoft.Json.JsonSerializationException unable to find constructor to use for types" error when deserializing class -