再会,
我有一个数据框,例如:
sample.df = data.frame(a=c(-1,1,0,-1),b=c(2,NA,1,2),c=c(0,0,1,2),d=c(-1,-2,0,0))
我想为每一列生成一个堆积条形图,显示该列中每个唯一值出现的次数(忽略 NA)。
我的第一个想法是创建一个新的数据框,其中可能的值作为行名(这里描述为分数),数据值是该值在该列中出现的次数:
Score a b c d
2 0 2 1 0
1 1 1 1 0
0 1 0 2 0
-1 2 0 0 1
-2 0 0 0 1
我已经尝试使用其他示例中的 ddply、表和聚合,但看不到获得该结构的方法。
我的想法是,一旦我有了它,应该很容易将它交给 barplot 以获得堆叠的 barplot 显示每列中每个值的出现次数。
我很感激你能给我的任何指导。
谢谢,
戴夫
为了结束这个循环,这就是我结束的地方。
我按照 tcash21 的建议使用了融化(“分数”不在原始数据中,只是属性 a、b、c 和 d)。此外,ggplot() 给了我一个关于使用“y”和 stat="bin" 的错误,所以我在 ggplot() 调用中删除了“y”的分配。以下是我最终为达到所需情节而采取的步骤:
sample.df = data.frame(a=c(-1,1,0,-1),b=c(2,NA,1,2),c=c(0,0,1,2),d=c(-1,-2,0,0))
new.df<-melt(sample.df)
new.df<-new.df[complete.cases(new.df),]
new.df$Score<-as.factor(new.df$value)
ggplot(new.df, aes(x=variable, fill=Score)) + geom_bar()