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
使它变得如此简单时,为什么要让它变得更难可能会有所帮助……您的答案非常好,我感谢您的帮助。我之所以想把它作为“基本直方图”来做,是因为我想通过挑战这个问题来从中学习。我能够重新打开它。你为什么不编辑你的问题?