在R中扩展hist的行

时间:2012-01-09 10:28:28

标签: r histogram

我有一个由列组成的数据框; “名字”,“时间”,“计数”。显示有多少项目花费了一段时间。我希望能够根据计数绘制直方图(并使用hist()选择边界等。)

+------+------+-------+
| name | time | count |
+------+------+-------+
| foo  |    5 |     5 |
| foo  |   10 |     8 |
| foo  |   15 |     6 |
| foo  |   20 |     8 |
| bar  |    5 |     7 |
| bar  |   10 |     4 |
| bar  |   15 |     9 |
| bar  |   20 |    10 |
+------+------+-------+

由此我希望能够按名称和时间创建时间直方图。但是,hist()会自行计算行数,我已经在count列中计算了数量。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

最简单的方法是使用条形图而不是直方图。

library(lattice)
barchart( count ~ time | name, data=d )

library(ggplot2)
ggplot(d, aes(x=time, y=count)) + 
  geom_bar(stat="identity") + 
  facet_grid( ~ name )

答案 1 :(得分:0)

您可以通过重复每个值计数次数来重新生成数据并生成直方图...

d <- structure(list(V1 = c("foo", "foo", "foo", "foo", "bar", "bar", 
"bar", "bar"), V2 = c(5L, 10L, 15L, 20L, 5L, 10L, 15L, 20L), 
    V3 = c(5L, 8L, 6L, 8L, 7L, 4L, 9L, 10L)), .Names = c("V1", 
"V2", "V3"), class = "data.frame", row.names = c(NA, -8L))


hist(as.numeric(unlist(apply(d,1,function(x){rep(x[2],time=x[3])}))))