1)
将yearqtr对象转换为Date类将得到季度的第一个,因此
library(dplyr)
library(zoo)
df1 %>%
mutate(date = as.Date(as.yearqtr(as.Date(date))))
给:
date value
1 2010-01-01 24.10
2 2010-04-01 16.40
3 2010-07-01 18.50
4 2010-10-01 8.61
5 2011-01-01 12.60
6 2011-04-01 20.10
7 2011-07-01 17.90
8 2011-10-01 14.50
2)
为了得到季度末的音符
as.Date.yearqtr
有一个
frac=
参数,对于季度开始为0(默认值),对于季度结束为1或两者之间的任何分数。
df2 %>%
mutate(date = as.Date(as.yearqtr(as.Date(date)), frac = 1))
给:
date value
1 2010-03-31 24.10
2 2010-06-30 16.40
3 2010-09-30 18.50
4 2010-12-31 8.61
5 2011-03-31 12.60
6 2011-06-30 20.10
7 2011-09-30 17.90
8 2011-12-31 14.50
3)
另一种可能性是,不使用日期来表示季度,而是直接将其表示为yearqtr对象。yearqtr对象在内部是4个季度的年+0、1/4、1/2、3/4,因此可以很容易地对它们进行操作和排序,例如,如果yq是yearqter对象,那么yq+1/4是下一个季度。
df1 %>%
mutate(date = as.yearqtr(as.Date(date)))
给:
date value
1 2010 Q1 24.10
2 2010 Q2 16.40
3 2010 Q3 18.50
4 2010 Q4 8.61
5 2011 Q1 12.60
6 2011 Q2 20.10
7 2011 Q3 17.90
8 2011 Q4 14.50