这个问题是我问过的previous one的扩展,其中的数据稍微复杂一些。这似乎很基本,但是我为此已经将头撞墙了。
我需要通过自变量choice
(x轴)和ses
(可能是堆积的barplot分组)来创建因变量(agegroup
)的患病率百分比图)。理想情况下,我希望该图为并排的两面图,每性别各有一个面。
我数据的相关部分是这种形式:
subject choice agegroup sex ses
John square 2 Female A
John triangle 2 Female A
John triangle 2 Female A
Mary circle 2 Female C
Mary square 2 Female C
Mary rectangle 2 Female C
Mary square 2 Female C
Hodor hodor 5 Male D
Hodor hodor 5 Male D
Hodor hodor 5 Male D
Hodor hodor 5 Male D
Jill square 3 Female B
Jill circle 3 Female B
Jill square 3 Female B
Jill hodor 3 Female B
Jill triangle 3 Female B
Jill rectangle 3 Female B
... [about 12,000 more observations follow]
我想使用ggplot2
来获得强大的功能和灵活性以及明显的易用性。但是,我发现的每个教程或操作方法都已经完成了90%的工作,这是因为它们只是加载了R或其包提供的内置数据集之一。但是我当然需要使用自己的数据。
我知道有必要将其转换为长格式以便ggplot2
能够使用它,但是我只是无法正确地做到这一点。而且,我对现有的所有不同数据处理程序包,某些功能似乎是其他功能的一部分或类似的东西感到困惑。
编辑:根据我最初的问题,我开始意识到用线图进行绘制将不起作用。至少我现在不这么认为。因此,这是绘制此数据集的图形化方法的模型(具有完全虚构的值):
颜色代表对choice
的不同反应。
有人可以帮我吗?并且,如果您对以更好的方式可视化数据有任何建议,请分享!
答案 0 :(得分:1)
不确定我是否正确理解了您想要的输出。.所以这是第一次尝试
library( tidyverse )
df2 <- df %>%
mutate( agegroup = as.factor( agegroup ) ) %>%
group_by( ses, agegroup, sex, choice ) %>%
summarise( count = n() )
# ses agegroup sex choice count
# <fct> <fct> <fct> <fct> <int>
# 1 A 2 Female square 1
# 2 A 2 Female triangle 2
# 3 B 3 Female circle 1
# 4 B 3 Female hodor 1
# 5 B 3 Female rectangle 1
# 6 B 3 Female square 2
# 7 B 3 Female triangle 1
# 8 C 2 Female circle 1
# 9 C 2 Female rectangle 1
# 10 C 2 Female square 2
# 11 D 5 Male hodor 4
ggplot(df2, aes( x = ses, y = count, group=agegroup, colour = agegroup)) +
geom_point( stat='summary', fun.y=sum) +
stat_summary(fun.y=sum, geom="line") +
facet_grid( c("choice", "sex" ) )
答案 1 :(得分:0)