3

很简单的问题...

我是 R 新手,出于某种原因,我似乎无法理解这一点。我有一个 CSV 文件,看起来像这样:

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

bin 大小为 1,范围为 1000-1500。我已经阅读了我的 CSV 文件,那里似乎一切正常,但我无法生成简单的直方图。我尝试过简单地使用条形图,但数据没有按数字顺序排列,因此不会产生我需要的输出。使用这样的数据,如何在 R 中生成直方图?

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

4

4 回答 4

6

由于该hist函数对每个 bin 中的项目进行计数,因此您需要“分解”您的“已计数”数据,例如使用rep. 然后你可以hist在结果向量上使用。

with(df, hist(rep(x = Bin, times = Number)))
于 2013-11-12T20:37:14.543 回答
4

While this is absolutely possible with base R, I always enjoy the elegance and simplicity of the package ggplot2.

For example, you could do the following:

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

(Run install.packages('ggplot2') first, if you do not have the package installed.)

于 2013-11-12T20:25:08.273 回答
1

您的数据已经分箱,因此从该数据集中获取 R 直方图对象的最简单方法是使用CRAN 上HistogramToolsPreBinnedHistogram包中的函数。此函数采用断点列表(示例中的第 1 列)和每个 bin 的计数(第 2 列),并返回适当的 R 直方图对象以进行绘图或进一步分析,而无需先将数据集分解为未合并的形式。

library(HistogramTools)
my.data<-read.csv("input.csv")
plot(PreBinnedHistogram(my.data$V1, my.data$V2))
于 2014-12-08T20:48:41.593 回答
0

关键是将数据按正确的顺序排列。假设您的数据框被称为df

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

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

于 2013-11-12T20:30:21.033 回答