这是一个后续问题,正如hadley指出的那样,除非我用时间戳修复问题,否则我生成的图表将是不正确的。考虑到这一点,我正在努力解决我在代码中遇到的问题。到目前为止,我已经从我之前的问题得到了回答,使用attach()函数停止使用dataSet.df $ variableName 我从strptime时间戳中绘制图表时遇到问题。我将附上我正在使用的所有代码以及解析数据集的XML文件(这在前面的问题中也有回答)来自。
<?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>
我目前的R代码如下:
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'
为了实现这一目标(并减少被问到的问题)是否有可以使用的教程/网站?再次非常感谢你的帮助。
答案 0 :(得分:2)
你仍然在我之前的两个回答中纠正了我纠正的代码中的一些错误。让我们再次尝试这一点,更明确地说:
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简介(随程序附带)或其他介绍文本开始。你首先跳到高级材料(日期时间数据类型,读取XML,因素,......)并被烧毁。先迈出第一步。