2012-03-22 7 views
5

Tengo una XTS serie temporal de valores semanalesExtender una serie de veces a la semana en el diario

Jan 4 2004, 0.99 
Jan 11 2004, 1.11 
Jan 18 2004, 1.06 
.... 

y quiero convertirlo a valores diarios

Jan 4 2004, 0.99 
Jan 5 2004, 0.99 
Jan 6 2004, 0.99 
.... 
Jan 10 2004, 0.99 
Jan 11 2004, 1.11 
Jan 12 2004, 1.11 
Jan 13 2004, 1.11 
.... 

donde se replica cada valor de la siguiente 6 días.

¿Cómo puedo hacer esto en R?

Respuesta

10

Los datos que se muestran no son una serie XTS. Supongo que así es como se representan los datos en un archivo CSV. Para responder a su pregunta, voy a suponer que tiene un objeto semanal xts, w.

Combine w con un objeto xts vacío con un índice que abarque todos los días que desee. Luego use na.locf en el resultado.

d <- merge(w, xts(,seq(start(w),end(w),"days"))) 
d <- na.locf(d) 
+0

Eso es realmente genial. –

0

Aquí es uno de los enfoques:

dat <- read.table(text="Jan 4 2004, 0.99 
Jan 11 2004, 1.11 
Jan 18 2004, 1.06", header=F) 
dat 

dat2 <- dat[rep(seq_len(nrow(dat)), 7), ] 
dat2 <- with(dat2, dat2[order(V1, V2, V3), ]) 
dat2$V2 <- rep(dat$V2, each=7) + 0:6 
rownames(dat2) <- 1:nrow(dat2) 
dat2 

cual da:

V1 V2 V3 V4 
1 Jan 4 2004, 0.99 
2 Jan 5 2004, 0.99 
3 Jan 6 2004, 0.99 
4 Jan 7 2004, 0.99 
5 Jan 8 2004, 0.99 
6 Jan 9 2004, 0.99 
7 Jan 10 2004, 0.99 
8 Jan 11 2004, 1.11 
9 Jan 12 2004, 1.11 
10 Jan 13 2004, 1.11 
11 Jan 14 2004, 1.11 
12 Jan 15 2004, 1.11 
13 Jan 16 2004, 1.11 
14 Jan 17 2004, 1.11 
15 Jan 18 2004, 1.06 
16 Jan 19 2004, 1.06 
17 Jan 20 2004, 1.06 
18 Jan 21 2004, 1.06 
19 Jan 22 2004, 1.06 
20 Jan 23 2004, 1.06 
21 Jan 24 2004, 1.06 
Cuestiones relacionadas