根据Date类绘制直方图

时间:2014-05-17 22:51:09

标签: r

我正在寻找网络,但找不到我想要的答案。 这是我的输入数据:

 Date           Calls
 2012-01-01       3
 2012-01-01       3
 2012-01-01       10
 2012-03-02       15
 2012-03-02       7
 2012-03-02       5
 2012-04-02       0
 2012-04-02       5
 2012-04-02       18
 2012-04-02       1
 2012-04-02       0
 2012-05-02       2

我想在“日期”列中绘制一个具有每天调用总和的hist。 是的,可以通过识别Date列的级别并添加相应的Calls来完成,但想知道 如果作为一种优雅的方式来做到这一点。 “Date”列为“Date”data.class()。 根据这个例子,最终的组织应该有4个区间(16,27,24,2)。

干杯,

2 个答案:

答案 0 :(得分:4)

嗯,从技术上讲,直方图实际上只是为了估计连续数据的密度函数以及数据编码的方式,更像是Date是一个分类变量。所以你可能只想要一个计数条形图而不是真正的直方图。你可以用ggplot

做同样的事情
qplot(Date,Calls, data=dd, stat="summary", fun.y="sum", geom="bar")

resulting plot

答案 1 :(得分:1)

阅读数据:

d <- read.table(text=
"Date           Calls
2012-01-01       3
2012-01-01       3
2012-01-01       10
2012-03-02       15
2012-03-02       7
2012-03-02       5
2012-04-02       0
2012-04-02       5
2012-04-02       18
2012-04-02       1
2012-04-02       0
2012-05-02       2",
header=TRUE)

d$Date <- as.Date(d$Date)
library(plyr)
s <- ddply(d,"Date",summarize,Calls=sum(Calls))
library(ggplot2)

如果我们使用Date作为x变量,我们会获得月份标签:

ggplot(s,aes(x=Date,y=Calls))+geom_bar(stat="identity")

您可能更喜欢特定的日期标签:

ggplot(s,aes(x=factor(Date),y=Calls))+geom_bar(stat="identity")

或非默认标签:

ggplot(s,aes(x=format(Date,"%d-%b"),y=Calls))+geom_bar(stat="identity")+
  labs(x="Date")

也可以通过构建自己的hist对象并将其传递给plot.histogram来实现此目的,但我认为这样更容易......