R中的分箱数据帧的直方图

时间:2013-08-13 21:40:36

标签: r dataframe histogram bin

来自python代码的我(巨大)数据帧由每个样本的不同大小类中的计数组成,如:

dummy <- as.data.frame(matrix(nrow = 10, ncol = 12))
colnames(dummy) <- c("ID", paste("cl", c(1:11), sep = "."))
dummy$ID <- c(letters[1:10])
dummy[, -1] <- rep(round(abs(rnorm(11))*1000,0), 10)

我尝试为X轴上具有尺寸等级的每个样本(ID)创建计数的直方图,并计算Y轴上的计数(频率)。使用hist()as.numeric()以及t()合并as.table()没有成功......

我没有成功告诉R这个数据框(至少部分)是一个表,其中的计数已经分布在colnames的二进制位中。我敢肯定我不是第一个找那个但却找不到答案的人,可能是因为我找不到合适的关键字(?)。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

直方图基本上是一种特殊的条形图。所以你可以使用函数barplot

我更喜欢包ggplot2:

#reshape to long format
library(reshape2)    
dummy <- melt(dummy, id.var="ID")

library(ggplot2)    
p <- ggplot(dummy, aes(x=variable, y=value)) + 
  geom_histogram(stat="identity") + 
   #specifying stat_identity tells ggplot2 that the data is already binned
  facet_wrap(~ID, ncol=2)

print(p)

enter image description here

答案 1 :(得分:2)

ggplot2很适合这样的问题,但你也可以用基础R图形做一些事情。它不是很漂亮,但是我会做:

par(mfrow=c(5,2))
par(mar=c(2,2,2,1))
for (i in 1:nrow(dummy)) {
  barplot(as.numeric(dummy[i,-1]), names.arg=colnames(dummy[1,-1], main=dummy[i,1])
}

enter image description here