2017-10-19 162 views
0

想象一下,我有以下数据框df(或沿着下表的线,但更长的时间),我有年龄组的个人和他们相应的吸烟状态。 age group可以取值为18-24,24-35和36-50(其中组之间的人数相当均衡),并且smoking status只是是或否。如何在R中使用因子值(如y)做ggplot barplot?

   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不是一个数值变量,而是一个因素,所以我猜测必须有一些中间步骤?作为一名初学者,我正努力学习一种很好的方式来做到这一点。我知道我可以做一些操作,通过这些操作我可以计算出每个组的两个比例并手动绘制这些值,但我想遵循很好的练习。

+0

你尝试过什么?默认代码应该适用于此,因为'geom_bar'的默认统计信息是'stat_count' - 正是您在此需要的。 –

+0

我已经尝试过'p <-ggplot(df,aes(Gender,Binge)) p + geom_bar(stat =“identity”)''给每个组提供barplot,但仅限于'yes'没有'回应。此外,它提供了计数与比例。有没有做比例的选择? –

回答

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