【问题标题】:How to scratch the year and quarter value from quarterly dates in R如何从 R 中的季度日期中划出年份和季度值
【发布时间】:2013-08-12 16:03:04
【问题描述】:

我想从年份值和季度值开始转换为时间序列数据。

quaterly_data <- c(30.53,36.36,40.73,45.19,  

                   55.67,63.19,72.2,81.19,    

                   100.37,120.32,141.64,143.89,  

                   154.14,164.5,174.32,189.26,   

                   224.13,239.35,255.95,277.23)

#quarterly dates
library(zoo)
quarterly_dates <- as.yearqtr(seq(as.Date("2002/3/1"), as.Date("2006/12/1"), by = "3 months"))

日期如下所示:

[1] "2002 Q1" "2002 Q2" "2002 Q3" "2002 Q4" "2003 Q1" "2003 Q2" "2003 Q3" "2003 Q4" "2004 Q1" "2004 Q2"
[11] "2004 Q3" "2004 Q4" "2005 Q1" "2005 Q2" "2005 Q3" "2005 Q4" "2006 Q1" "2006 Q2" "2006 Q3" "2006 Q4"

我想写一个函数来刮掉第一个元素“2002 Q1”,并将其放入myts 。但我不知道该怎么做。

【问题讨论】:

  • 你可以使用 substr 来做这个
  • 你想写一个函数来去掉一个元素吗?

标签: r date time-series


【解决方案1】:
x<-c("2002 Q1","2002 Q2" )
myyear<-substr(x,1,4)
> myyear
[1] "2002" "2002"
> myquarter<-substr(x,5,7)
> myquarter
[1] " Q1" " Q2"

如果要全部申请,可以使用 plyr 包中的ldplydo.call(rbind,) 如下 使用do.call

myyear<-do.call(rbind,lapply(quarterly_dates,function(x)substr(x,1,4)))
myquarter<-do.call(rbind,lapply(quarterly_dates,function(x)substr(x,5,7)))
mydate<-cbind(myyear,myquarter)

Using plyr package:

library(plyr)
myyear<-ldply(lapply(quarterly_dates,function(x)substr(x,1,4)))
myquarter<-ldply(lapply(quarterly_dates,function(x)substr(x,5,7)))
mydate<-cbind(myyear,myquarter)
#rename the col names as year and quarter
names(mydate)<-c("year","quarter")
#make my year and my quarter as numeric
mydate$year<-as.numeric(mydate$year)
mydate$quarter<-as.numeric(mydate$quarter)

您可以使用car 包中的recode 函数将四分之一的十进制转换为数字:

library(car)
mydate$quarter<-recode(mydate$quarter,"0.25=1;0.5=2;0.75=3;else= 4")

> mydate
   year quarter
1  2002       4
2  2002       1
3  2002       2
4  2002       3
5  2003       4
6  2003       1
7  2003       2
8  2003       3
9  2004       4
10 2004       1
11 2004       2
12 2004       3
13 2005       4
14 2005       1
15 2005       2
16 2005       3
17 2006       4
18 2006       1
19 2006       2
20 2006       3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多