tiene subconjuntos subconjunto sobre propios propio primaria potencia para impropio entre ejercicios diferencia cuantos conjuntos conjunto r time-series subset xts

subconjuntos - subconjunto impropio



Devolver los marcos de tiempo del subconjunto de datos dentro de otros marcos de tiempo? (3)

Hay formas muy ingeniosas de xts objetos xts . Por ejemplo, uno puede obtener todos los datos de todos los años, meses, días pero estrictamente entre las 9:30 AM y las 4 PM haciendo:

my_xts["T09:30/T16:00"]

O puede obtener todas las observaciones entre dos fechas haciendo:

my_xts["2012-01-01/2012-03-31"]

O todas las fechas antes / después de una cierta fecha al hacer:

my_xts["/2011"] # from start of data until end of 2011 my_xts["2011/"] # from 2011 until the end of the data

¿Cómo puedo obtener todos los datos solo para ciertos meses para todos los años o solo ciertos días para todos los meses y años? ¿Existen otros trucos de subconjuntos?


Puede usar la familia de funciones .index* para obtener ciertos meses o ciertos días del mes. Ver ?index para la lista completa de funciones. Por ejemplo:

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


Tenga en cuenta que parece haber un comportamiento diferente para el xts xts de un formato de fecha anual para Windows y 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'']

El resultado para x2 es consistente entre Windows y ubuntu, ya que el formato es la fecha completa. Sin embargo, el x3 producirá resultados diferentes para windows y ubuntu, después de la conversión de las fechas a yearmon.


la subconjunto de la hora del día está un poco oculta, así que entiendo por qué provocaría una pregunta como esta. El único otro "truco" que conozco es la last y la first función, que puedes anidar si lo necesitas. por ejemplo, esto obtendrá los últimos 2 días de las primeras 3 semanas.

last(first(my_xts, "3 weeks"), "2 days")