我有大量的序数比例数据,我想将它们可视化为堆积百分比柱状图。我可以在excel中进行所需的操作,但希望将流程移至R中以实现更高效的工作流程。数据来自观察行为,并对1-4个17个不同项目的每个观察结果进行评级。我需要在堆积的栏中显示每个项目的每个评分的百分比。
我的第一个问题是将我拥有的数据转换成所需的百分比。第二个问题是将其转换为ggplot可视化。尽管我很确定这一切都可以用几行代码完成,但是我不确定如何做到。当我在excel中制作这些图表时,我必须沿着= COUNTIF(V2:V295,1)/ COUNTA(V2:V295)的界线使用一个公式,但是要针对每个比例级别和每个指标。然后,我将其变成堆积的百分比柱状图,只需单击鼠标即可。
# A tibble: 6 x 17
S1 S2 S3 Skills T4 T5 T6 Thinking A7 A8 A9 Application R10 R11 R12
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 4 4 4 4 3 3 3 3 4 4 2 4 4 4 3
2 3 4 3 3 3 3 2 3 3 3 1 3 3 3 2
3 3 3 3 3 2 2 1 2 3 2 1 2 3 1 3
4 4 3 3 3 3 3 3 3 2 2 1 2 3 2 3
5 4 3 3 3 3 3 2 3 2 3 3 3 4 2 3
6 4 4 3 4 3 3 3 3 2 3 2 3 4 3 4
# ... with 2 more variables: Relationships <dbl>, Overall <dbl>
由此,我想要一个堆叠的柱状图,该柱状图按列(S1,S2,S3等)显示每个比例值(1-4)的百分比。任何指导将不胜感激!
哦,是的,我希望尽可能多地停留在dydyverse中,以完成此操作,尽管如果我需要另一个软件包来处理这种类型的数据,我会自己玩。
答案 0 :(得分:0)
很难知道您到底在寻找什么。但是,这是一个好主意,也许您可以提出一些意见,以使我们对此表示关注。但是从我收集的数据来看,您需要将数据收集为长格式,然后进行分组和汇总,以获取取决于项目的标度值计数。然后,您可以通过对列进行分组并使用prop.table
来获得比例。
melt
正在将数据从宽格式转换为长格式,以便可以进行分组。它还允许ggplot
很好地绘制和分组数据!
df <- tibble::tribble(
~S1, ~S2, ~S3, ~Skills, ~T4, ~T5, ~T6, ~Thinking, ~A7, ~A8, ~A9, ~Application, ~R10, ~R11, ~R12,
4, 4, 4, 4, 3, 3, 3, 3, 4, 4, 2, 4, 4, 4, 3,
3, 4, 3, 3, 3, 3, 2, 3, 3, 3, 1, 3, 3, 3, 2,
3, 3, 3, 3, 2, 2, 1, 2, 3, 2, 1, 2, 3, 1, 3,
4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 2, 3, 2, 3,
4, 3, 3, 3, 3, 3, 2, 3, 2, 3, 3, 3, 4, 2, 3,
4, 4, 3, 4, 3, 3, 3, 3, 2, 3, 2, 3, 4, 3, 4)
prop_table <- df %>%
reshape2::melt() %>%
group_by(value, variable) %>%
summarise(n = n()) %>%
group_by(variable) %>%
mutate(prop = prop.table(n))
prop_table %>%
ggplot(aes(x = variable, y = prop, fill = as.factor(value))) +
geom_bar(stat = "identity",
position = "stack")