Come impostare un sottoinsieme di un oggetto xts per includere solo i giorni della settimana (lun-ven, con sabato e domenica esclusi)?R nei giorni feriali XTS
12
A
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]
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.
mostro essenzialmente la stessa risposta, ma basandosi nei giorni feriali numerici che renda indipendente dalla localizzazione utilizzata. –
+1 Nota c'è la funzione '.indexwday', quindi la tua ultima riga potrebbe anche essere:' x [.indexwday (x)% in% 1: 5] '. –
@DirkEddelbuettel Grazie per averlo indicato (e +1 chez vous). Altrimenti non avrei apprezzato la differenza –