我想生成一个日期序列one quarter
间隔,具有开始日期和结束日期。我有以下代码:
> seq(as.Date('1980-12-31'), as.Date('1985-06-30'), by = 'quarter')
[1] "1980-12-31" "1981-03-31" "1981-07-01" "1981-10-01" "1981-12-31"
[6] "1982-03-31" "1982-07-01" "1982-10-01" "1982-12-31" "1983-03-31"
[11] "1983-07-01" "1983-10-01" "1983-12-31" "1984-03-31" "1984-07-01"
[16] "1984-10-01" "1984-12-31" "1985-03-31"
正如您所看到的,这没有生成正确的序列,因为我不明白日期是如何生成的"1981-07-01"
即将来到这里,我期待着"1981-06-30"
.
有没有办法以四分之一间隔正确生成这样的序列?
谢谢你的时间。
问题中的起始日期和截止日期都是季度末日期,因此我们假设这是您感兴趣的一般情况。
1)创建yearqtr对象序列yq
然后将它们转换为 Date 类。frac=1
告诉它使用月底。或者只使用yq
因为它直接对年份和季度进行建模。
library(zoo)
from <- as.Date('1980-12-31')
to <- as.Date('1985-06-30')
yq <- seq(as.yearqtr(from), as.yearqtr(to), by = 1/4)
as.Date(yq, frac = 1)
giving;
[1] "1980-12-31" "1981-03-31" "1981-06-30" "1981-09-30" "1981-12-31"
[6] "1982-03-31" "1982-06-30" "1982-09-30" "1982-12-31" "1983-03-31"
[11] "1983-06-30" "1983-09-30" "1983-12-31" "1984-03-31" "1984-06-30"
[16] "1984-09-30" "1984-12-31" "1985-03-31" "1985-06-30"
2)或没有任何包添加 1 到from
and to
这样它们就在下个月的月初,创建序列(对于月初序列没有问题),然后从生成的序列中减去 1,得到与上面相同的结果。
seq(from + 1, to + 1, by = "quarter") - 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)