2012-01-09 63 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])}))))