2015-06-26 5 views
6

पर तिमाही/वर्ष प्रारूप कनवर्ट करें मैंने एक ऐसा फ़ंक्शन बनाया है जो क्वार्टर-वर्ष प्रारूप के वेक्टर को तारीखों के वेक्टर पर केंद्रित करता है।एक तिथि

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

यह मेरे कार्य का कोड है।

.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) 
    } 

मेरा कार्य ठीक काम करता है लेकिन यह लंबा और थोड़ा जटिल लगता है। मुझे लगता है कि यह पहले से ही अन्य पैकेजों में किया जाना चाहिए (उदाहरण के लिए lubridate) लेकिन मुझे यह नहीं मिल रहा है। क्या कोई मुझे इस कोड को सरल बनाने में मदद कर सकता है?

उत्तर

11

1) चिड़ियाघर पैकेज में "yearqtr" वर्ग है। "Date" वर्ग के लिए है कि करने के लिए कनवर्ट करें और उसके बाद:

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) यह भी पहले के बजाय महीने के अंतिम दिन पाने के लिए काम करता है:

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

3) भी नहीं करने पर विचार "Date" कक्षा में कनवर्ट करना और केवल "yearqtr" कक्षा का उपयोग सीधे:

as.yearqtr(x, format = "Q%q/%y") 
## [1] "2013 Q1" "2014 Q2" 
संबंधित मुद्दे