我有一个关于大学学生身体的数据集,其中有10列,分别代表不同的因素,例如学生身份,性别,种族等。
目前,我只是对他们被录取的术语以及他们的种族感兴趣,因为我想了解不同种族背景的学生人数随着时间的变化。因此,我创建了一个新数据框,其中包含两列,名为ethnalitydf:
> head(ethnicitydf)
admit_term ethn_desc
1 2011-10-01 White/Caucasian
2 2011-10-01 Filipino/Filipino-American
3 2011-10-01 White/Caucasian
4 2011-10-01 Latino/Other Spanish
5 2011-10-01 East Indian/Pakistani
6 2011-10-01 White/Caucasian
我不确定如何创建在x轴上具有admit_term(时间)以及每个admit_term出现每种种族的频率的图。第二列中有12个独特的种族,我想在一张图表中显示每个adterm_term(总共6个词)的全部12个种族的发生频率,每种种族都有不同的颜色。
我想到的第一步是使用length(which(ethnicitydf$admit_term == "2011-10-01" & ethnicitydf$ethn_desc == "White/Caucasian"))
来计算每个学期的每个种族,并将数据记录在新的数据框中,但是我觉得应该有一个更快,更有效的方法这个。也许使用包装?有人可以帮助我吗?谢谢!
答案 0 :(得分:2)
条形图将为您完成计数。
library(ggplot2)
ethnicitydf <- data.frame(admit_term = sample(c("2011-10-01","2012-10-01","2013-10-01"), 100, TRUE),
ethn_desc =sample(c("White/Caucasian","Filipino/Filipino-American","East Indian/Pakistani"), 100, TRUE))
ggplot() +
geom_bar(data=ethnicitydf, mapping=aes(x=admit_term, fill=ethn_desc), position="dodge")
由reprex package(v0.3.0)于2019-07-03创建
如果您有很多序列,也可以像这样绘制点。
ggplot() +
geom_point(data=ethnicitydf, mapping=aes(x=admit_term, colour=ethn_desc), stat="count")
要获取行,您需要确保y轴为数字(将文本日期转换为数字,例如年份)。
ethnicitydf$admit_term <- as.Date(ethnicitydf$admit_term)
ggplot() +
geom_line(data=ethnicitydf, mapping=aes(x=admit_term, colour=ethn_desc), stat="count") +
geom_point(data=ethnicitydf, mapping=aes(x=admit_term, colour=ethn_desc), stat="count")