柱状图,使用dplyr/ggplot,男性和女性的柱并排。

huangapple go评论118阅读模式
英文:

Bar-chart with dplyr/ggplot with male/female bars side by side

问题

这是示例代码:

  1. df <- read.table(text =
  2. "sex var value
  3. m a 1
  4. m a 1
  5. m a 0
  6. m b 0
  7. m b 0
  8. f a 1
  9. f a 0
  10. f b 0
  11. f b 1",
  12. header = TRUE,
  13. stringsAsFactors = FALSE
  14. )

我想要创建的是一个柱状图,其中显示了每个 var 值在每个 sex 中的比例。

所以在上面的数据中,我会得到:

  1. var a :
  2. m : 0.6
  3. f : 0.5
  4. var b :
  5. m : 0
  6. f : 0.5

但使用 ggplot 表示为柱状图。

英文:

I'm trying to

Here's the example :

  1. df &lt;- read.table(text =
  2. &quot;sex var value
  3. m a 1
  4. m a 1
  5. m a 0
  6. m b 0
  7. m b 0
  8. f a 1
  9. f a 0
  10. f b 0
  11. f b 1&quot;,
  12. header = TRUE,
  13. stringsAsFactors = FALSE
  14. )

What I'd like to create is a bar-chart which has the proportions for each of
the var values, for each sex.

So in the above data I would have :

  1. var a :
  2. m : 0.6
  3. f : 0.5
  4. var b :
  5. m : 0
  6. f : 0.5

But expressed as a bar-chart using ggplot

答案1

得分: 1

使用 tidyverse

  1. df %>%
  2. group_by(var, sex) %>%
  3. summarise(vals = mean(value)) %>%
  4. ungroup() %>%
  5. ggplot(aes(x = var, y = vals, col = sex, fill = sex, group = sex)) +
  6. geom_bar(stat = "identity")

您也可以交换 varsex

英文:

Using tidyverse:

  1. df %&gt;%
  2. group_by(var, sex) %&gt;%
  3. summarise(vals = mean(value)) %&gt;%
  4. ungroup() %&gt;%
  5. ggplot(aes(x = var, y = vals, col = sex, fill = sex, group = sex)) +
  6. geom_bar(stat = &quot;identity&quot;)

You can also reverse var and sex.

huangapple
  • 本文由 发表于 2020年1月4日 00:22:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/59581930.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定