令人尴尬的简单问题......
我是R的新手,因为某些原因,我无法理解这一点。我有一个CSV文件,看起来像这样:
Bin,Number
1363,5
1028,4
1303,3
1467,1
1242,3
1415,5
..
.
bin大小为1,范围为1000-1500。我已经阅读了我的CSV文件,一切似乎都没问题,但我无法生成简单的直方图。我试过简单地使用一个条形图,但数据没有数字排序,所以不会产生我需要的输出。使用这样的数据,如何在R?
中生成直方图一旦我有一个简单的直方图,我相信我能够使用它并很好地格式化它。
答案 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
将它们按数字顺序排列。