如何用因子值(如y)做R中的ggplot barplot?

时间:2017-10-19 22:20:05

标签: r dataframe ggplot2 bar-chart

想象一下,我有以下数据框df(或类似于下表的内容,但更长),其中我有个人年龄组及其相应的吸烟状况。 age group可以采用18-24,24-35和36-50的值(其中各组之间的人数相当平衡),而smoking status只是是或否。

               age-group     smoking status
 person1   |     18-24     |      yes      | 
 person2   |     25-35     |      no       |
 person3   |     36-50     |      yes      |
 person4   |     36-50     |      yes      |
 person5   |     18-24     |      no       |
 person6   |     25-35     |      no       |
 ...

我想使用ggplot创建一个条形图,其中每个年龄组都有吸烟与吸烟的比例(3组,每组2个酒吧代表吸烟与非吸烟比例)。这个例子对我来说很简单,因为smoking status不是一个数字变量而是一个因素,所以我猜测必须有一些中间步骤?作为初学者,我正在努力学习一种很好的方法来做到这一点。我知道我可以通过一些操作来计算每组的两个比例并手动绘制这些值,但我想遵循不错的练习。

1 个答案:

答案 0 :(得分:1)

这个怎么样?

library(ggplot2)

set.seed(123) # for reproducibility

# create a dataframe of random data
df <- data.frame(ageGroup = sample(c('18-24', '25-35', '36-50'), 50, replace = TRUE),
                 smokingStatus = sample(c('yes', 'no'), 50, replace = TRUE))

# plot it up!
p <- ggplot(df, aes(x = smokingStatus)) + geom_bar() + 
    facet_wrap( ~ ageGroup, ncol = 3)
print(p)

产生:

Smoking Status Histogram