我创建了一个函数,将季度年格式的向量强制转换为日期向量。
.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
例如)但我找不到它。有人可以帮我简化这段代码吗?
1)动物园包有一个"yearqtr"
班级。转换为该值,然后转换为"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)或者使用它来获取该季度的最后一天而不是第一天:
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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)