Domanda

Una domanda newbie. (Aggiunto nuovo INFO)

Ho una serie di dati in tempo timbrato che sono stati raccolti in modo casuale. Mi piace creare una matrice di trame, ma non ho potuto creare utilizzando grafico a dispersione o xyplot & tempo gli oggetti.

I miei dati

dataset$Time  #POSIX time objects (no set sampling period)
              #i built POSIX time objects by dataset$Time<-strptime(tt, "%H:%M:%OS")
              #the origial string was formated like this 12:12:12.234 (HH:MM:SS:msec)
dataset$d1, dataset$d2 #integers
dataset$d3 #factor with 10 levels

.

posso fare questi

plot( dataset$Time, dataset$d1)
scatterplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$d2 | dataset$d3, data=dataset)

Tuttavia, non posso fare queste (oggetto ora POSIX in asse x)

scatterplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)
xyplot(dataset$d1 ~ dataset$Time | dataset$d3, data=dataset)

( NUOVO INFO )

  

Errore nella struttura (.internal (as.POSIXct (x, tz)), class = c ( "POSIXt", "POSIXct"),:. Non valido 'x' argomento

( NUOVO INFO ), ma funziona questo (POSIX oggetto volta in asse y)

xyplot(dataset$Time ~ dataset$d1 | dataset$d3, data=dataset)

legati, ma questione diversa è hexbin. Quando gli oggetti di tempo vengono aggiunti al hexbin, la trama dal hexbin non mostra il formato dell'ora corretta sulle unità.

bin<-hexbin(dataset$Time, dataset$d1) 
plot(bin))

Che cosa devo fare?

Grazie per la ricerca in esso !!

È stato utile?

Soluzione

Ecco un esempio di lavoro. Si può avere ottenuto i vostri formati di dati sbagliati -. Uno ha bisogno di essere attenti circa i formati di dati precisi

In primo luogo, una semplice trama di dati:

R> X <- data.frame(pt=Sys.Date()+0:4, x1=100+cumsum(rnorm(5)),
+                                     x2=90+cumsum(rt(5,4)))
R> X
          pt     x1    x2
1 2010-06-22  98.73 90.33
2 2010-06-23  99.43 89.56
3 2010-06-24  98.85 86.95
4 2010-06-25  99.08 88.52
5 2010-06-26 100.30 94.08
R> 

Questo è il cosiddetto di larghezza reticolo non usa. Hai bisogno di trasformarlo in formato molto . Io uso stack() qui, è anche possibile utilizzare cast() e melt() dalla rimodellare Pacchetto:

R> Y <- data.frame(pt=rep(X$pt,2), stack(X, select=c(x1,x2)))
R> Y
           pt values ind
1  2010-06-22  98.73  x1
2  2010-06-23  99.43  x1
3  2010-06-24  98.85  x1
4  2010-06-25  99.08  x1
5  2010-06-26 100.30  x1
6  2010-06-22  90.33  x2
7  2010-06-23  89.56  x2
8  2010-06-24  86.95  x2
9  2010-06-25  88.52  x2
10 2010-06-26  94.08  x2
R> 

Ora la chiamata xyplot è semplicemente:

R> xyplot(values ~ pt | ind, data=Y, panel=panel.lines)

e si può di utilizzo ovviamente molto più complicato espressioni condizionata.

Altri suggerimenti

A quanto pare R abbia qualche problema si occupano di tossicodipendenza a volte POSIX ... mi dà l'errore:

  

Errore in +.POSIXt (x [piano (d)], x [soffitto (D)]): binary '+' non è definito per "POSIXt" oggetti

semplicemente gettato a numerico e dovrebbe funzionare. È possibile nascondere l'asse corrispondente e ridisegnare in un secondo momento con le date corrette

per esempio:.

scatterplot(dataset$d1 ~ as.numeric(dataset$Time) | dataset$d3, data=dataset, xaxt="n")
axis(1, at=as.numeric(dataset$Time), labels=dataset$Time, cex.axis=0.5)

Per me è solo funziona, così si ha probabilmente un vettore tempo in un formato errato. Che cosa si ottiene quando si chiama class(dataset$Time)? Dovrebbe contenere "POSIXct" per questo al lavoro.

D'altra parte, non c'è bisogno di mettere in dataset$ formula se si fornisce data=dataset.

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