按一年中的一周子集 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
如果我想从 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