2012-01-31 22 views

risposta

15

Ecco cosa farei:

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")] 

EDIT: Joshua Ulrich nei commenti indica una soluzione migliore utilizzando .indexwday(), uno di una famiglia di built-in funzioni di accesso per l'estrazione pezzi dell'indice degli oggetti di classe xts. Inoltre, come soluzione di Dirk Eddelbuettel, il seguente dovrebbe essere locale indipendente:

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

mostro essenzialmente la stessa risposta, ma basandosi nei giorni feriali numerici che renda indipendente dalla localizzazione utilizzata. –

+9

+1 Nota c'è la funzione '.indexwday', quindi la tua ultima riga potrebbe anche essere:' x [.indexwday (x)% in% 1: 5] '. –

+0

@DirkEddelbuettel Grazie per averlo indicato (e +1 chez vous). Altrimenti non avrei apprezzato la differenza –

6

Calcolando il giorno della settimana data la data e la composizione. Nell'esempio, utilizzo un tipo Date ma il cast su POSIXlt funziona allo stesso modo per POSIXct timestamp intra-day.

> 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" 
>  

Questa non è una domanda xts ma la gestione di base della data.

Problemi correlati