Временные метки, Qplot и strptime в R - PullRequest
0 голосов
/ 14 июля 2010

Это дополнительный вопрос, как указывал Хэдли, если я не исправлю проблему с метками времени, и графики, которые я создаю, будут неверными.Имея это в виду, я работаю над устранением проблем с кодом.До сих пор я из своих предыдущих вопросов, на которые были даны ответы, прекратил использовать функцию attach () в пользу использования dataSet.df $ variableName. У меня возникли проблемы при рисовании графика из меток времени strptime.Я приложу весь код, который я использую, и XML-файл, из которого анализируется набор данных (на этот вопрос также был дан ответ в более раннем вопросе) из:

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)))

Команда plot создает график, но выглядит не очень приятно.Команда qplot возвращает следующее сообщение об ошибке:

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

В интересах получения правильного решения (и сокращения задаваемых вопросов), есть ли учебник / веб-сайт, который я могу использовать?Еще раз большое спасибо за вашу помощь.

1 Ответ

2 голосов
/ 14 июля 2010

Вы все еще делаете некоторые из ошибок в коде, который я исправил в моих двух предыдущих ответах вам. Итак, давайте попробуем это снова, более явно:

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()

Я также получаю сообщение об ошибке с qplot(), но у вас просто может быть слишком маленький диапазон ваших данных. Итак, давайте попробуем это:

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> 

Сейчас qplot() работает.

Итак, в итоге вы использовали данные, которые не удовлетворяли некоторым минимальным требованиям для функции qplot, которую вы использовали, - например, с временной осью, охватывающей более секунды.

Как правило, вы можете начать с Введение в R (поставляется с программой) или другого вступительного текста. Вы первыми перешли к расширенному материалу (типы данных datetime, чтение из XML, факторы и т. Д.) И сгорели. Сначала первые шаги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...