Question

Une question de débutant. (AJOUTÉE INFO NOUVEAU)

J'ai un ensemble de données horodatées qui ont été recueillis au hasard. J'aime créer une matrice de parcelles, mais je ne pouvais pas créer à l'aide soit scatterplot ou des objets xyplot et temps.

mes données

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

.

je peux faire ces

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

Cependant, je ne peux pas faire ces (objet temps dans Posix axe x)

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

( NEW INFO )

  

Erreur dans la structure (.Internal (as.POSIXct (x, tz)), class = c ( "POSIXt", "POSIXct"):. Invalide 'x' argument

( NEW INFO ) mais cela fonctionne (objet de temps à y Posix axe)

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

liés, mais la question est différente hexbin. Lorsque des objets de temps sont ajoutés à hexbin, l'intrigue du hexbin ne montre pas le format heure sur les unités.

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

Que dois-je faire?

Merci pour la recherche en elle !!

Était-ce utile?

La solution

Voici un exemple de travail. Vous pouvez avoir obtenu vos formats de données erronées -. Il faut être prudent sur les formats de données précises

Tout d'abord, un simple trame de données:

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> 

Ceci est ce qu'on appelle large réseau ne pas utiliser. Vous devez la transformer en long format. J'utilise stack() ici, vous pouvez également utiliser cast() et melt() de la Reshape package:

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> 

Maintenant, l'appel xyplot est simplement:

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

et vous pouvez l'utilisation des cours beaucoup plus compliqué expressions de conditionnement.

Autres conseils

Il semble que R a un problème face à la dépendance des temps ... il me POSIX donne l'erreur:

  

Erreur dans +.POSIXt (x [étage (d)], x [plafond (d)]): binaire '+' ne sont pas définis pour les objets "POSIXt"

il suffit de les jeter à numérique et il devrait fonctionner. Vous pouvez masquer l'axe correspondant et redessiner plus tard avec les dates exactes

par exemple:.

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)

Pour moi, il fonctionne exactement, vous a probablement un vecteur de temps dans un mauvais format. Qu'est-ce que vous obtenez lorsque vous appelez class(dataset$Time)? Il devrait contenir « POSIXct » pour que cela fonctionne.

Par contre, vous n'avez pas besoin de mettre dataset$ dans la formule si vous fournissez data=dataset.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top