2010-07-14 14 views
0

Il s'agit d'une question de suivi comme hadley l'a souligné sauf si je répare le problème avec les horodatages que les graphiques que je produirais seraient incorrects. Dans cette optique, je travaille à la résolution des problèmes que j'ai avec le code. Jusqu'à présent, j'ai répondu à mes questions précédentes qui ont cessé d'utiliser la fonction attach() en faveur de l'utilisation de dataSet.df $ variableName J'ai des problèmes pour dessiner le graphique à partir des horodatages strptime. Je vais attacher tout le code que j'utilise et le fichier XML à partir duquel l'ensemble de données est analysé (Cela a également été répondu dans une question précédente) de.Time Stamps, Qplot et strptime dans R

<?xml version = "1.0"?> 
    <Company > 
<shareprice> 
    <timeStamp> 12:00:00.01</timeStamp> 
    <Price> 25.02</Price> 
</shareprice> 
<shareprice> 
    <timeStamp> 12:00:00.02</timeStamp> 
    <Price> 15</Price> 
</shareprice> 
<shareprice> 
     <timeStamp> 12:00:00.025</timeStamp> 
     <Price> 15.02</Price> 
</shareprice> 
<shareprice> 
     <timeStamp> 12:00:00.031</timeStamp> 
     <Price> 18.25</Price> 
</shareprice> 
<shareprice> 
     <timeStamp> 12:00:00.039</timeStamp> 
     <Price> 18.54</Price> 
</shareprice> 
<shareprice> 
     <timeStamp> 12:00:00.050</timeStamp> 
     <Price> 16.52</Price> 
</shareprice> 
    <shareprice> 
     <timeStamp> 12:00:01.01</timeStamp> 
     <Price> 17.50</Price> 
    </shareprice> 
    </Company> 

Le code R J'est actuellement comme suit:

library(ggplot2) 
library (XML) 
test.df <- xmlToDataFrame("c:/Users/user/Desktop/shares.xml") 
test.df 
timeStampParsed <- strptime(as.character(test.df$timeStamp), "%H:%M:%OS") 
test.df$Price <- as.numeric(as.character(test.df$Price)) 
summary (test.df) 
mean(test.df$Price) 
sd (test.df$Price) 
mean(timeStampParsed) 
par(mfrow=c(1,2)) 
plot(timeStampParsed, test.df$Price) 
qplot(timeStampParsed,Price,data=test.df,geom=c("point","line"), 
     scale_y_continuous(limits = c(10,26))) 

La commande plot produit un graphique, mais il est très agréable à la recherche. la commande retourne de qplot le message d'erreur suivant:

Error in sprintf(gettext(fmt, domain = domain), ...) : 
invalid type of argument[1]: 'symbol' 

Dans l'intérêt à obtenir ce droit (et en réduisant les questions posées) est-il un tutoriel/site web que je peux utiliser? Encore une fois merci beaucoup pour votre aide.

Répondre

2

Vous toujours faire certaines des erreurs dans le code I corrigé dans mes deux réponses précédentes à vous. Essayons donc cette fois, plus explicitement:

library(ggplot2) 
library (XML) 
df <- xmlToDataFrame("/tmp/anthony.xml") # assign to df, shorter to type 
df 
sapply(df, class)   # shows everything is a factor 
summary(df)    # summary for factor: counts ! 
df$timeStamp <- strptime(as.character(test.df$timeStamp), "%H:%M:%OS") 
df$Price <- as.numeric(as.character(test.df$Price)) 
sapply(df, class)   # shows both columns converted 
options("digits.secs"=3) # make sure we show sub-seconds 
summary (df)    # real summary 
with(df, plot(timeStamp, Price)) # with is an elegant alternative to attach() 

Je reçois aussi une erreur avec qplot() mais vous pouvez simplement avoir trop peu d'une plage dans vos données. Essayons donc ceci:

R> set.seed(42)    # fix random number generator 
R> df$timeStamp <- df[1,"timeStamp"] + cumsum(runif(7)*60) 
R> summary(df)    # new timestamps spanning larger range 
    timeStamp       Price  
Min. :2010-07-14 12:00:54.90 Min. :15.0 
1st Qu.:2010-07-14 12:01:59.71 1st Qu.:15.8 
Median :2010-07-14 12:02:58.12 Median :17.5 
Mean :2010-07-14 12:02:55.54 Mean :18.0 
3rd Qu.:2010-07-14 12:03:52.20 3rd Qu.:18.4 
Max. :2010-07-14 12:04:51.96 Max. :25.0 
R> qplot(timeStamp,Price, data=df, geom=c("point","line"), 
+ scale_y_continuous(limits = c(10,26))) 
R> 

Maintenant, qplot() fonctionne. Donc, en somme, vous utilisiez des données qui ne remplissaient pas les exigences minimales de la fonction qplot que vous utilisiez - avec un axe temporel s'étendant sur plus d'une seconde, disons.

En général, vous pouvez commencer par Une introduction à R (fourni avec le programme) ou un autre texte d'introduction. Vous avez sauté la tête en premier au matériel avancé (types de données datetime, lecture de XML, facteurs, ...) et a été brûlé. Premières étapes en premier.

+0

Dirk merci pour l'aide. J'ai changé le fichier XML pour avoir plus d'une seconde, cela semble répondre aux exigences minimales de la fonction qplot. –

+0

Je vois aussi l'avantage de corriger les horodatages en utilisant strptime() car hadley avait raison de faire les graphes sans fixer l'horodatage créé de mauvais graphes car l'axe x n'est pas mis à l'échelle pour représenter la ligne temporelle. @Dirk Je vais regarder une introduction à R qui est venu avec le programme, c'est juste que je n'avais pas d'autre choix que de commencer où je l'ai fait. Vous avez également répondu à l'une de mes prochaines questions sur l'automatisation des scripts R. J'ai utilisé la méthode BATCH car je n'ai pas trouvé la méthode de script dans cette réponse. Existe-t-il un moyen de contrôler le type de fichier de sortie (fichier .pdf du graphique créé)? –