我有一个数据框,其格式如下:
Month Frequency
2007-08 2
2010-11 5
2011-01 43
2011-02 52
2011-03 31
2011-04 64
2011-05 73
我想使用X箱(X可能在15左右,但实际数据有200个月以上),并使用频率列中的数据作为直方图每个箱的频率,以此数据创建直方图。我该怎么做?
到目前为止,我已经尝试了两种方法,分别是hist()和barplot()命令。 hist()的问题在于,它似乎没有给我任何方法来指定我要在直方图的频率计算中使用频率列。 barplot()的问题在于,我在选择X箱时没有任何灵活性,如果省略了几个月,则生成的图实际上不是真正的直方图,因为x轴不连续。
我现在唯一的想法是使用barplot()方法,为频率缺失的月份填写0,并使用space = 0删除条形之间的间距。问题在于选择任意数量的垃圾箱并不是特别容易。
最佳答案
为了获得这种灵活性,您可能必须复制数据。这是使用rep
的一种方法:
n <- 10
dat <- data.frame(
x = sort(sample(1:50, n)),
f = sample(1:100, n))
dat
expdat <- dat[rep(1:n, times=dat$f), "x", drop=FALSE]
现在,您已将数据复制到data.frame
expdat
中,从而可以使用不同数量的bin来调用hist
:par(mfcol=c(1, 2))
hist(expdat$x, breaks=50, col="blue", main="50 bins")
hist(expdat$x, breaks=5, col="blue", main="5 bins")
par(mfcol=c(1, 1))
关于r - 如何从R中的汇总数据创建直方图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9133057/