微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

每季度强制执行相等的天数 R 'xts'

如何解决每季度强制执行相等的天数 R 'xts'

假设我有以下数据集:

标准普尔500指数的每日观察,以及 季度公共债务总额。 季度的观察是在时间

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 次对 S&P500 的观察?

解决方法

我们可以将索引转换为 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)),FUN = length))

在第一个代码块中使用它

xt2[ave(seq_along(index(xt2)),as.yearqtr(index(xt2)),FUN = 
        seq_along) <= n]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。