我有一个数据框,其格式如下:
Month Frequency
2007-08 2
2010-11 5
2011-01 43
2011-02 52
2011-03 31
2011-04 64
2011-05 73
Run Code Online (Sandbox Code Playgroud)
我想根据这些数据创建一个直方图,使用X箱(X可能大约为15,但实际数据有200多个月),并使用频率列中的数据作为直方图每个箱的频率.我怎么能做到这一点?
到目前为止,我已尝试过两种方法,使用hist()和barplot()命令.hist()的问题在于它似乎没有给我任何方式来指定我想在直方图的频率计算中使用频率列.barplot()的问题在于我在选择X bin时没有任何灵活性,如果省略了几个月,那么结果图实际上并不是真正的直方图,因为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]
Run Code Online (Sandbox Code Playgroud)
现在您已将数据复制到 data.frame 中,从而允许您使用不同数量的 binexpdat进行调用: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))
Run Code Online (Sandbox Code Playgroud)
