2012-01-31 20 views

Respuesta

15

Esto es lo que haría:

library(xts) 
data(sample_matrix) 
sample.xts <- as.xts(sample_matrix, descr='my new xts object') 
x <- sample.xts['2007'] 
x[!weekdays(index(x)) %in% c("Saturday", "Sunday")] 

EDITAR: Joshua Ulrich en los comentarios señala una mejor solución utilizando .indexwday(), uno de una familia de funciones integradas de descriptor de acceso para la extracción de piezas del índice de xts objetos de clase. También, al igual que la solución de Dirk Eddelbuettel, lo siguiente debe ser independiente de la Localidad:

x[.indexwday(x) %in% 1:5] 
+2

muestro esencialmente la misma respuesta, pero confiando en días laborables numéricos que la hace independiente de la configuración regional utilizada. –

+9

+1 Tenga en cuenta que existe la función '.indexwday', por lo que su última línea también podría ser:' x [.indexwday (x)% in% 1: 5] '. –

+0

@DirkEddelbuettel Gracias por señalar eso (y +1 chez vous). De lo contrario, no habría apreciado la diferencia. –

6

Calculando el día de la semana dada la fecha y subconjunto. En el ejemplo, utilizo un tipo Date pero el modelo POSIXlt funciona de la misma manera para POSIXct marcas de tiempo intradía.

> mydates <- Sys.Date() + 0:6 
> mydates 
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-04" 
+ "2012-02-05" "2012-02-06" 
> we <- sapply(mydates, function(d) { as.POSIXlt(d)$wday}) %in% c(0, 6) 
> we 
[1] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE 
> mydates[ ! we ] 
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-06" 
>  

Esto realmente no es una pregunta de xts sino el manejo básico de la fecha.

Cuestiones relacionadas