使用聚合数据创建直方图

时间:2013-11-12 20:19:02

标签: r csv histogram

令人尴尬的简单问题......

我是R的新手,因为某些原因,我无法理解这一点。我有一个CSV文件,看起来像这样:

Bin,Number
1363,5
1028,4
1303,3
1467,1
1242,3
1415,5
..
.

bin大小为1,范围为1000-1500。我已经阅读了我的CSV文件,一切似乎都没问题,但我无法生成简单的直方图。我试过简单地使用一个条形图,但数据没有数字排序,所以不会产生我需要的输出。使用这样的数据,如何在R?

中生成直方图

一旦我有一个简单的直方图,我相信我能够使用它并很好地格式化它。

4 个答案:

答案 0 :(得分:5)

由于hist功能会对每个分档中的项目进行计数,因此您需要“爆炸”您的“已计算”数据,例如使用rep。然后,您可以在结果向量上使用hist

with(df, hist(rep(x = Bin, times = Number)))

答案 1 :(得分:4)

虽然这对于基础R来说绝对可行,但我总是喜欢包ggplot2的优雅和简洁。

例如,您可以执行以下操作:

library(ggplot2)
ggplot(data, aes(x=Bin, y=Number)) + geom_bar(stat='identity', width=1)

(如果您没有安装软件包,请先运行install.packages('ggplot2')。)

答案 2 :(得分:1)

您的数据已经被分箱,因此从此数据集中获取R直方图对象的最简单方法是使用CRAN上HistogramTools包中的PreBinnedHistogram函数。此函数采用断点列表(示例中的第1列)和每个bin(第2列)的计数,并返回一个正确的R直方图对象,用于绘图或进一步分析,而无需先将数据集展开为未绑定的形式。

library(HistogramTools)
my.data<-read.csv("input.csv")
plot(PreBinnedHistogram(my.data$V1, my.data$V2))

答案 3 :(得分:0)

关键是要按正确的顺序放置数据。假设您的数据框名为df

barplot(df$Number[order(df$Bin)])

如果你只是通过向它提供数据向量来使用barplot,它将按向量的顺序绘制条形。在绘图之前,使用order将它们按数字顺序排列。