我有一个由列组成的数据框; “名字”,“时间”,“计数”。显示有多少项目花费了一段时间。我希望能够根据计数绘制直方图(并使用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列中计算了数量。我怎样才能做到这一点?
答案 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])}))))