r - 每个季度执行相等的天数 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
(from 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]
推荐阅读
- python - 如何将系列添加到现有数据框?
- angular - 日期选择器中的日期未显示在更新表单中,我在角度使用补丁值,而其他数据正在显示
- php - pushHTTP 和 php - 如何?
- php - 如何使用 Laravel eloquent 获取表中每个用户的最新记录
- docx4j - Docx4j 6.1.2 - 将 Flat Open XML 转换为 Xlsx
- sql - 转换后如何保留数据类型和小数 - Oracle
- kubernetes - 如何从本地机器访问 kubernetes 上的服务器?
- javascript - 在 JS 中安装 npm uuid 后无法调用 uuid 函数
- mpi - 使用 mpirun 运行时未激活 OpenMP 线程
- java - 是否可以在没有信任库的情况下在客户端实现 mTLS?