每个季度执行相同的天数 R 'xts'
Enforce equal amount of days each quarter R 'xts'
假设我有以下数据集:
标准普尔 500 指数的每日观察,以及
季度总计 Public 债务。
季度观察时间
xxxx-01-01
xxxx-04-01
xxxx-07-01
xxxx-10-01
周末、节假日等非交易日用NA表示
2020-01-01 NA
2020-01-02 3257.85
2020-01-02 3234.85
.
.
.
.
2020-03-31 2584.59
这将产生每季度不等量的观察结果。
我的问题是如何删除一定数量的日期,以便在每个季度内我将有 66 个标准普尔 500 指数观测值?
我们可以将索引转换为 yearqtr
(来自 zoo
),使用它为前 66 个观察结果创建逻辑索引
xt1[ave(seq_along(index(xt1)), as.yearqtr(index(xt1)), FUN =
seq_along) <= 66]
正如评论中提到的@G.Grothendieck,想法是首先删除 NA 元素
xt2 <- na.omit(xt1)
然后,计算每个季度的min
最小元素数
n <- min(tapply(seq_along(index(xt1)), as.yearqtr(index(xt1)), FUN = length))
在第一个代码块中使用它
xt2[ave(seq_along(index(xt2)), as.yearqtr(index(xt2)), FUN =
seq_along) <= n]
假设我有以下数据集:
标准普尔 500 指数的每日观察,以及 季度总计 Public 债务。 季度观察时间
xxxx-01-01
xxxx-04-01
xxxx-07-01
xxxx-10-01
周末、节假日等非交易日用NA表示
2020-01-01 NA
2020-01-02 3257.85
2020-01-02 3234.85
.
.
.
.
2020-03-31 2584.59
这将产生每季度不等量的观察结果。 我的问题是如何删除一定数量的日期,以便在每个季度内我将有 66 个标准普尔 500 指数观测值?
我们可以将索引转换为 yearqtr
(来自 zoo
),使用它为前 66 个观察结果创建逻辑索引
xt1[ave(seq_along(index(xt1)), as.yearqtr(index(xt1)), FUN =
seq_along) <= 66]
正如评论中提到的@G.Grothendieck,想法是首先删除 NA 元素
xt2 <- na.omit(xt1)
然后,计算每个季度的min
最小元素数
n <- min(tapply(seq_along(index(xt1)), as.yearqtr(index(xt1)), FUN = length))
在第一个代码块中使用它
xt2[ave(seq_along(index(xt2)), as.yearqtr(index(xt2)), FUN =
seq_along) <= n]