2016-12-05 5 views
0

Если я хочу Подмножество некоторых месяц от XTS объекта можно сделать просто:Subset XTS на неделю года

xtsData [ "2016-12"]

Мой вопрос, если ему можно подмножить неделю, если я получу данные в формате% Y-% W. Это, очевидно, не работает:

xtsData [ "2016-49"]

я не нашла какой-либо информации о нем. Есть ли способ сделать это или это невозможно?

ответ

1

Посмотрите на ?.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 
+0

Привет, да, я знаю об индексах. Причина, по которой я хотел сделать это, состоит в том, что у меня есть функция, которая принимает строку как формат, а затем применяет этот формат к подмножествам, что обеспечивает гибкость и делает эту функцию DRY. Я не хотел переписывать его, но, вероятно, его к лучшему. Благодаря! – nesvarbu

Смежные вопросы