【问题标题】:Multi-group histogram with group-specific frequencies具有组特定频率的多组直方图
【发布时间】:2017-04-23 03:46:33
【问题描述】:

首先,我已经阅读了以下帖子:ggplot2 - Multi-group histogram with in-group proportions rather than frequency

我遵循了 ddply 建议,但它似乎不适用于我的数据。从逻辑上讲,代码应该在我的数据集上完美运行,我不知道我做错了什么。

总体而言:我想制作一个直方图(我正在学习 ggplot),以显示我每个研究组中的基因型频率。

类似这样的:

这是一个模拟我自己的模拟数据集:

df<-data.frame(ID=1:60,
               Genotypes=sample(c("CG", "CC", "GG"), 60, replace=T),
               Study_Group=sample(c("Control", "Pathology1", "pathology2"), 60, replace=T))

我尝试了 p + geom_bar(aes(aes(y = ..count../sum(..count..)) 的变体,但 r 返回“找不到‘计数’对象”或类似的东西。

我也试过了:

df.new<-ddply(df,.(Study_Group),summarise,
              prop=prop.table(table(df$Genotype)),
              Genotype=names(table(df$Genotype)))`

而且我认为 summarise 函数存在错误,但老实说,我不知道自己在做什么。

问题仅仅是我对解决方案的理解,还是我的数据集中存在固有的不同?

感谢您的帮助。

【问题讨论】:

    标签: r ggplot2 histogram frequency


    【解决方案1】:

    试试这个。在此,我使用dplyr,它是一个包,其中包含来自plyrddply 类型函数的更新版本。一件事,我不确定你是否想让你的 x 轴成为 Study_Groups 或 Genotypes。您的问题表明您希望每个组中 Genotype 的频率,但您的图表在 x 上有 Genotypes。解决方案遵循既定的愿望,而不是情节。但是,进行更改以在 x 上获取 Genotype 很简单。我会在代码 cmets 中注明要进行哪些更改和更改。

    library(dplyr)
    library(ggplot2)
    
    df2 <- df %>%
      count(Study_Group, Genotypes) %>%
      group_by(Study_Group) %>% #change to `group_by(Genotypes) %>%` for alternative approach
      mutate(prop = n / sum(n))
    
    ggplot(data = df2, aes(Study_Group, prop, fill = Genotypes)) + 
      geom_bar(stat = "identity", position = "dodge")
    

    【讨论】:

    • 谢谢!它工作得很好!我肯定会阅读更多关于 dyplr 的内容,这非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2020-05-10
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多