Il existe des façons très astucieuses de sous-définir les objets xts
. Par exemple, on peut obtenir toutes les données pour toutes les années, mois, jours mais en étant strictement entre 9h30 et 4 PM en faisant:
my_xts["T09:30/T16:00"]
Ou vous pouvez obtenir toutes les observations entre deux dates en faisant:
my_xts["2012-01-01/2012-03-31"]
Ou toutes les dates avant/après une certaine date en faisant:
my_xts["/2011"] # from start of data until end of 2011
my_xts["2011/"] # from 2011 until the end of the data
Comment puis-je obtenir toutes les données pour certains mois seulement pour toutes les années ou seulement certains jours pour tous les mois et années? Existe-t-il d'autres astuces de sous-ensemble?
Vous pouvez utiliser le .index*
famille de fonctions pour obtenir certains mois ou certains jours du mois. Voir ?index
pour la liste complète des fonctions. Par exemple:
library(quantmod)
getSymbols("SPY")
SPY[.indexmon(SPY)==0] # January for all years (note zero-based indexing!)
SPY[.indexmday(SPY)==1] # The first of every month
SPY[.indexwday(SPY)==1] # All Mondays
le sous-ensemble de l'heure est un peu caché, donc je comprends pourquoi cela spark une question comme celle-ci. Le seul autre "truc" que je connaisse est le last
et first
fonctions, que vous pouvez imbriquer si vous en avez besoin. Par exemple, cela obtiendra les 2 derniers jours des 3 premières semaines.
last(first(my_xts, "3 weeks"), "2 days")
Sachez qu'il semble y avoir un comportement différent pour le sous-ensemble xts
d'un format de date yearmon pour Windows et Ubuntu.
library(quantmod)
library(xts)
getSymbols("SPY", src="google", from = "2004-01-01")
x1 <- SPY['2006-01/2007-12']
x2 <- apply.monthly(x1,mean)
x2['2006-01/2007-12']
x3 <- as.xts(coredata(x2),order.by = as.yearmon(index(x2)))
x3['2006-01/2007-12']
Le résultat pour x2
est cohérent entre Windows et Ubuntu, car le format est la date complète. Cependant, le x3
produira un résultat différent pour windows et ubuntu, après la conversion des dates en yearmon.