按一年中的一周子集 XTS

Subset XTS by week of the year

如果我想从 xts 对象中提取某个月份的子集,我可以简单地做:

xtsData["2016-12"]

我的问题是,如果我获得 %Y-%W 格式的数据,是否可以对一周进行子集化。这显然行不通:

xtsData["2016-49"]

我没有找到任何相关信息。有什么办法可以做到吗?

看看?.indexweek。您无需麻烦以 %Y-%W 格式获取时间。

请注意,除了周之外,您还可以按许多时间块进行子集化,例如月日、工作日,使用名称格式 .indexXXXXX 的函数,为不同的块输出整数等....这使子集操作变得容易。 ?.indexweek 的文档将向您展示其他选择。

这是一个示例,您希望在 2016 年的第二周为给定的股票划分子集。

library(quantmod)
getSymbols("GOOG")
GOOG2 <- GOOG["2016"]
# Add a column just to demonstrate the values obtained from .indexweek in printed output below. This is just optional.
GOOG2$weeknum <- .indexweek(GOOG2016)

head(GOOG2, 15)
# GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted weeknum
# 2016-01-04    743.00   744.060  731.258     741.84     3272800        741.84    2401
# 2016-01-05    746.45   752.000  738.640     742.58     1950700        742.58    2401
# 2016-01-06    730.00   747.180  728.920     743.62     1947000        743.62    2401
# 2016-01-07    730.31   738.500  719.060     726.39     2963700        726.39    2401
# 2016-01-08    731.45   733.230  713.000     714.47     2450900        714.47    2401
# 2016-01-11    716.61   718.855  703.540     716.03     2090600        716.03    2402
# 2016-01-12    721.68   728.750  717.317     726.07     2024500        726.07    2402
# 2016-01-13    730.85   734.740  698.610     700.56     2501700        700.56    2402
# 2016-01-14    705.38   721.925  689.100     714.72     2225800        714.72    2402
# 2016-01-15    692.29   706.740  685.370     694.45     3592400        694.45    2402
# 2016-01-19    703.30   709.980  693.410     701.79     2268100        701.79    2403
# 2016-01-20    688.61   706.850  673.260     698.45     3445000        698.45    2403
# 2016-01-21    702.18   719.190  694.460     706.59     2412200        706.59    2403
# 2016-01-22    723.60   728.130  720.121     725.25     2011800        725.25    2403
# 2016-01-25    723.58   729.680  710.010     711.67     1711700        711.67    2404

# Subset the second week
GOOG2016[.indexweek(GOOG2016) == 2402,]
# GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted
# 2016-01-11    716.61   718.855  703.540     716.03     2090600        716.03
# 2016-01-12    721.68   728.750  717.317     726.07     2024500        726.07
# 2016-01-13    730.85   734.740  698.610     700.56     2501700        700.56
# 2016-01-14    705.38   721.925  689.100     714.72     2225800        714.72
# 2016-01-15    692.29   706.740  685.370     694.45     3592400        694.45