2012-01-09 42 views
1

我有一个由列组成的数据框; “名称”,“时间”,“计数”。显示一定时间内有多少项目。我希望能够利用基于计数直方图(和有HIST()挑边界等)在R中扩展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列中有了计数。我怎样才能做到这一点?

回答

3

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

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

library(ggplot2) 
ggplot(d, aes(x=time, y=count)) + 
    geom_bar(stat="identity") + 
    facet_grid(~ name) 
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])}))))