gpt4 book ai didi

r - 在 R 中的 XTS 中拉出每月的第 n 天

转载 作者:行者123 更新时间:2023-12-04 17:11:09 25 4
gpt4 key购买 nike

我的问题与这里提出的问题密切相关:Pull Return from first business day of the month from XTS object using R .

我想提取每个月的第 10 个数据点,而不是提取每个月的第一天。我怎样才能做到这一点?

最佳答案

使用来自您链接到的问题的相同示例数据,您可以进行一些基本的子集设置。

这是示例数据:

library(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)

这是子集:
x[format(index(x), "%d") == "10"]
# Open High Low Close
# 2007-01-10 49.91228 50.13053 49.91228 49.97246
# 2007-02-10 50.68923 50.72696 50.60707 50.69562
# 2007-03-10 49.79370 49.88984 49.70385 49.88698
# 2007-04-10 49.55704 49.78776 49.55704 49.76984
# 2007-05-10 48.83479 48.84549 48.38001 48.38001
# 2007-06-10 47.74899 47.74899 47.28685 47.28685

这就是你要找的吗?

使用 %in%会给你更多的灵活性。例如,如果您想要每个月的第十天、第十一天和第十二天,您可以使用 x[format(index(x), "%d") %in% c("10", "11", "12")]反而。

更新

如果您在更新中想要提取第十个数据点,只需使用匿名函数,如下所示:
do.call(rbind, lapply(split(x, "months"), function(x) x[10]))
# Open High Low Close
# 2007-01-11 49.88529 50.23910 49.88529 50.23910
# 2007-02-10 50.68923 50.72696 50.60707 50.69562
# 2007-03-10 49.79370 49.88984 49.70385 49.88698
# 2007-04-10 49.55704 49.78776 49.55704 49.76984
# 2007-05-10 48.83479 48.84549 48.38001 48.38001
# 2007-06-10 47.74899 47.74899 47.28685 47.28685

请注意,第一行是该月的第十一天,因为数据实际上是从 2007 年 1 月 2 日开始的。
x[1, ]
# Open High Low Close
# 2007-01-02 50.03978 50.11778 49.95041 50.11778

关于r - 在 R 中的 XTS 中拉出每月的第 n 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com