R 根据日期类绘制直方图

R 根据日期类绘制直方图,r,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

我在网上四处寻找,但找不到我正在寻找的答案。 这是我的输入数据:

 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
我想绘制一个历史记录,在“日期”列中显示每一天的调用总数。 是的,可以通过确定日期列的级别并将相应的调用相加来完成 这是一种优雅的方式。“日期”列为“日期”数据。类()。 根据本例,最终的历史记录应该有4个(16、27、24、2)箱

干杯,

读取数据:

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)
您可能更喜欢特定的日期标签:

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
,也可以实现这一点,但我认为这种方法更容易…

读取数据:

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)
您可能更喜欢特定的日期标签:

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
,但我认为这种方法更简单…

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

qplot(Date,Calls, data=dd, stat="summary", fun.y="sum", geom="bar")

从技术上讲,直方图实际上只是用来估计连续数据的密度函数,而按照数据编码的方式,它更像是一个分类变量。所以你可能只需要一个计数条形图,而不是一个真正的直方图。您可以使用
ggplot

qplot(Date,Calls, data=dd, stat="summary", fun.y="sum", geom="bar")

不错。我试着使用
stat\u sum
,但没能成功。很好。我试着使用
stat\u sum
,但没能成功。谢谢,这太棒了!但我想把它作为柱状图。我现在正在做一些事情来创建一个新的数据帧:
for(I in levels(factor(activity$Date)){print(sum(activity$Calls[activity$Date==I])}
然后绘制新的帧。只是为了挑战,我想把它作为基本直方图…:)所谓“基本直方图”是指类似于
hist()
的输出的东西吗?我的答案,以及在重复问题上链接的几个答案,向您展示了如何更有效地聚合。正如我在回答中所说的,您可以构造一个
hist()
对象,并使用
plot.histogram()
对其进行绘图,但这有点麻烦--您必须找出断点、中点等。PS很抱歉,我结束了这个问题,可能有点过早。您可以提出一个新问题(几乎相同),使此规范更加精确。解释一下当
ggplot2
使它变得如此简单时,为什么要让它变得更难可能会有所帮助……您的答案非常好,我感谢您的帮助。我之所以想把它作为“基本直方图”来做,是因为我想通过挑战这个问题来从中学习。我能够重新打开它。你为什么不编辑你的问题?谢谢,这太好了!但我想把它作为柱状图。我现在正在做一些事情来创建一个新的数据帧:
for(I in levels(factor(activity$Date)){print(sum(activity$Calls[activity$Date==I])}
然后绘制新的帧。只是为了挑战,我想把它作为基本直方图…:)所谓“基本直方图”是指类似于
hist()
的输出的东西吗?我的答案,以及在重复问题上链接的几个答案,向您展示了如何更有效地聚合。正如我在回答中所说的,您可以构造一个
hist()
对象,并使用
plot.histogram()
对其进行绘图,但这有点麻烦--您必须找出断点、中点等。PS很抱歉,我结束了这个问题,可能有点过早。您可以提出一个新问题(几乎相同),使此规范更加精确。解释一下当
ggplot2
使它变得如此简单时,为什么要让它变得更难可能会有所帮助……您的答案非常好,我感谢您的帮助。我之所以想把它作为“基本直方图”来做,是因为我想通过挑战这个问题来从中学习。我能够重新打开它。你为什么不编辑你的问题?