R 显示数据帧每列中不同值计数的堆叠条形图

R 显示数据帧每列中不同值计数的堆叠条形图,r,plot,R,Plot,你好 我有一个数据框,例如: 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)) 我想为每列生成一个堆叠的条形图,显示每一个唯一值在该列中出现的次数(忽略NAs) 我的第一个想法是创建一个新的数据框,其中可能的值为行名(此处描述为Score),数据值为该列出现该值的次数: Score a b c d 2 0 2 1 0 1 1 1 1 0 0

你好

我有一个数据框,例如:

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))
我想为每列生成一个堆叠的条形图,显示每一个唯一值在该列中出现的次数(忽略NAs)

我的第一个想法是创建一个新的数据框,其中可能的值为行名(此处描述为Score),数据值为该列出现该值的次数:

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、table和aggregate,但没有找到实现该结构的方法

我的想法是,一旦我有了它,就应该直接将其交给barplot,以获得显示每列中每个值出现次数的堆叠barplot

我很感激你能给我的任何指导

谢谢,

戴夫

要结束这一循环,这里是我结束的地方。

我使用了tcash21建议的melt(“分数”不在原始数据中,只在属性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()
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将数据转换为ggplot的适当长形:

new.df<-melt(sample.df, id.vars="Score")
ggplot(new.df, aes(x=Score, y=value, fill=variable)) + geom_bar()

new.dft这让我走上了正确的道路。非常感谢。我会把我的问题改成最后的结果。