Domanda

Considera la versione (Simplistic) di questo oggetto Zoo:

d <-  c("2007-01-31", "2007-02-28", "2007-03-31", "2007-04-30", "2007-05-31", "2007-06-30", "2008-02-28", "2008-03-31", "2008-04-30", "2009-09-30", "2009-10-31", "2009-11-30", "2009-12-31", "2010-01-31")
vec <- runif(14, 0.5, 0.7)
vec.zoo = zoo(vec, order.by = as.Date(d, format = "%Y-%m-%d"))
plot(vec.zoo, ylim = c(0,1))
.

Come puoi vedere, mancano alcune date (guarda l'indice d).Tuttavia, quando traccia l'oggetto, ottengo quanto segue:

Inserire l'immagine Descrizione qui

Mi rendo conto che questo è fattibile con ggplot, tuttavia il risultato è multa multiplo anziché uno (vedere thread: link )

Vorrei essere in grado di disegnare l'oggetto dello zoo in una trama, ma lasciando uno spazio vuoto nella trama quando nessun dato è disponibile per una data specifica.Come posso farlo?

Grazie!

È stato utile?

Soluzione

Supponendo che la frequenza dei tuoi dati sia 'mensile':

library(zoo)
library(lubridate) # for easy extraction of different components of date object

# convert 'd' to monthly data
d2 <- as.yearmon(d)


# create zoo object
z1 <- zoo(vec, order.by = d2)


# create a continuous series of monthly data, ranging from min(d) to max(d)
d3 <- as.Date(d)
tt <- as.yearmon(min(year(d)) + seq(month(min(d)) - 1, (year(max(d)) - year(min(d))) * 12)/12)


# expand z1 to a continuous series
z2 <- merge(z1, zoo(, tt))


plot(z2)
.

Inserire l'immagine Descrizione qui

Altri suggerimenti

Cambia vec per seguire:

vec <- c(runif(5, 0.5, 0.7), NA, NA, NA, runif(5, 0.5, 0.7))

Per disporre di interruzioni, le date corrispondenti a VEC devono avere valori NA, se non ci sono dati per quella data, quindi interrompere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top