【问题标题】:Stacked barplot showing count of distinct values in each column of a data frame堆叠条形图显示数据框每列中不同值的计数
【发布时间】:2013-09-25 16:56:36
【问题描述】:

早安,

我有一个数据框,例如:

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 的建议使用了 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()

【问题讨论】:

    标签: r plot


    【解决方案1】:

    您需要使用 melt 将数据转换为适合 ggplot 的长形状:

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

    【讨论】:

    • 这让我走上了正确的道路。谢谢!我会用我结束的地方修改我的问题。
    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2014-05-11
    • 2019-12-11
    • 2019-07-19
    相关资源
    最近更新 更多