您将如何获得每日多个时段的每小时数据,并在同一图中显示12个“主机”的结果?也就是说,我想绘制一个24小时周期的样子,以获取一周的数据。最终目标是在采样之前和之后比较两组该数据。
dates Host CPUIOWait CPUUser CPUSys
1 2011-02-11 23:55:12 db 0 14 8
2 2011-02-11 23:55:10 app1 0 6 1
3 2011-02-11 23:55:09 app2 0 4 1
我已经能够很好地运行xyplot(CPUUser〜date | Host)。但是,我不想显示一周中的每个日期,而是希望将X轴作为一天中的小时数。
尝试将这些数据放入xts对象会导致错误,例如“ order.by需要适当的基于时间的对象”
这是数据帧的str():
'data.frame': 19720 obs. of 5 variables:
$ dates : POSIXct, format: "2011-02-11 23:55:12" "2011-02-11 23:55:10" ...
$ Host : Factor w/ 14 levels "app1","app2",..: 9 7 5 4 3 10 6 8 2 1 ...
$ CPUIOWait: int 0 0 0 0 0 0 0 0 0 0 ...
$ CPUUser : int 14 6 4 4 3 10 4 3 4 4 ...
$ CPUSys : int 8 1 1 1 1 3 1 1 1 1 ...
更新:仅供参考,我决定使用箱形图来显示中位数和“异常值”。
实质上:
Data$hour <- as.POSIXlt(dates)$hour # extract hour of the day
boxplot(Data$CPUUser ~ Data$hour) # for a subset with one host or for all hosts
xyplot(Data$CPUUser ~ Data$hour | Data$Host, panel=panel.bwplot, horizontal=FALSE)
谢谢
我对R真的很新。我从strptime函数创建了dates列。原始数据来自read.csv。
—
Scott Hoffman
让我们看
—
RomanLuštrik2011年
str()
一下data.frame。
@罗马感谢您的str()函数,我没有意识到这一点。因此,摆脱Factor列,我可以生成一个xts对象,即x <-xts(d [,3:5],order.by = d [,1])。然后,我便可以每小时申请一次,从而将数据从19720个对象缩短到480个。我不确定是否能将我带到想要的位置,但是我想现在离我更近了。
—
Scott Hoffman
xts()
因为该dates
列是一个因素。