【发布时间】:2017-05-20 00:07:10
【问题描述】:
对不起,我已经尽力了,但我没有找到答案。作为初学者,我不确定我能否清楚地提出问题。提前致谢。
所以我有一个数据框,其中包含 24000 行的消费数据。
在这个数据框中,有一系列关于过去两个月内购买的物品数量的变量:
NumberOfCoat、NumberOfShirt、NumberOfPants、NumberOfShoes...
并且有一个通过数字注册的变量“职业”。
所以现在数据看起来像这样
profession NumberOfCoat NumberOfShirt NumberOfShoes
individu1 1 1 1 1
individu2 3 2 4 1
individu3 2 2 0 0
individu4 6 0 3 2
individu5 5 0 2 3
individu6 7 1 0 5
individu7 4 3 1 2
我想了解各职业的消费结构,得到这样的结果:
ProportionOfCoat ProportionOfShirt ProportionOfShoe...
profession1 0.3 0.5 0.1
profession2 0.1 0.2 0.4
profession3 0.2 0.6 0.1
profession4 0.1 0.1 0.2
不知道是不是很清楚,但最后我想说:
医生购买的服装产品中有 10% 是 T 恤,而教师购买的服装中有 20% 是 T 恤。
最后,我想绘制一个堆叠条形图,其中每个堆叠都缩放为总和为 100%。 我想我们可以 dplyr 吗?
非常感谢!!
【问题讨论】:
-
library(dplyr); df %>% group_by(profession) %>% summarise_all(sum) %>% mutate_at(vars(-profession), prop.table) -
欢迎来到 Stack Overflow。这是不止一个问题。请一次只问一个。还请展示您试图获得答案的内容。
-
...你甚至不需要聚合来制作条形图;只需使用
position = 'fill':library(tidyverse); df %>% gather(df, var, val, -profession) %>% ggplot(aes(profession, val, fill = var)) + geom_col(position = 'fill')