R 在单个图表上打印具有多个条件的数据
我正在尝试使用ggplot2绘制一个图,其中并排的条形图是根据某些条件生成的,这些条件可以从数据中计算出来。我怀疑问题在于正确格式化数据,以便ggplot能够提供我想要的内容。但我这辈子都做不好 我所拥有的是一个数据框,里面有学生每次在学校上课时的行。感兴趣的变量有Student.ID、Course.ID、Session、Fiscal.Year和Facility。每一行都是一个学生参加课程的实例,并告诉他们参加了什么课程,他们在哪里参加了课程,等等。据我所知,这是数据长格式所需的条件(如果我错了,请纠正我)。唯一可能有NA值的字段是Facility,但我计划从绘图中排除这些字段,以便您可以将数据帧视为完全填充R 在单个图表上打印具有多个条件的数据,r,ggplot2,R,Ggplot2,我正在尝试使用ggplot2绘制一个图,其中并排的条形图是根据某些条件生成的,这些条件可以从数据中计算出来。我怀疑问题在于正确格式化数据,以便ggplot能够提供我想要的内容。但我这辈子都做不好 我所拥有的是一个数据框,里面有学生每次在学校上课时的行。感兴趣的变量有Student.ID、Course.ID、Session、Fiscal.Year和Facility。每一行都是一个学生参加课程的实例,并告诉他们参加了什么课程,他们在哪里参加了课程,等等。据我所知,这是数据长格式所需的条件(如果我错了
我想做的是绘制一个图表,显示每个财政年度有多少门课程需要这样做吗 扩展数据
> dput(df)
structure(list(ID = c(101L, 102L, 103L, 104L, 101L, 102L, 103L,
101L, 102L, 103L, 101L, 102L, 101L, 102L, 101L, 102L, 101L, 102L,
103L, 104L, 101L, 102L, 103L, 101L, 102L, 103L, 101L, 102L, 101L,
102L, 101L, 102L, 101L, 102L, 103L, 104L, 101L, 102L, 103L, 101L,
102L, 103L, 101L, 102L, 101L, 102L, 101L, 102L), CourseID = c(1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L),
Session = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L,
2L, 2L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L,
1L, 2L, 2L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
1L, 1L, 2L, 2L, 3L, 3L), Fiscal.Year = c("FY13", "FY13",
"FY13", "FY13", "FY13", "FY13", "FY13", "FY13", "FY13", "FY13",
"FY13", "FY13", "FY13", "FY13", "FY13", "FY13", "FY14", "FY14",
"FY14", "FY14", "FY14", "FY14", "FY14", "FY14", "FY14", "FY14",
"FY14", "FY14", "FY14", "FY14", "FY14", "FY14", "FY15", "FY15",
"FY15", "FY15", "FY15", "FY15", "FY15", "FY15", "FY15", "FY15",
"FY15", "FY15", "FY15", "FY15", "FY15", "FY15")), .Names = c("ID",
"CourseID", "Session", "Fiscal.Year"), class = "data.frame", row.names = c(NA,
-48L))
df
ID CourseID Session Fiscal.Year
1 101 1 1 FY13
2 102 1 1 FY13
3 103 1 1 FY13
4 104 1 1 FY13
5 101 2 1 FY13
6 102 2 1 FY13
7 103 2 1 FY13
8 101 2 2 FY13
9 102 2 2 FY13
10 103 2 2 FY13
11 101 3 1 FY13
12 102 3 1 FY13
13 101 3 2 FY13
14 102 3 2 FY13
15 101 3 3 FY13
16 102 3 3 FY13
17 101 1 1 FY14
18 102 1 1 FY14
19 103 1 1 FY14
20 104 1 1 FY14
21 101 2 1 FY14
22 102 2 1 FY14
23 103 2 1 FY14
24 101 2 2 FY14
25 102 2 2 FY14
26 103 2 2 FY14
27 101 3 1 FY14
28 102 3 1 FY14
29 101 3 2 FY14
30 102 3 2 FY14
31 101 3 3 FY14
32 102 3 3 FY14
33 101 1 1 FY15
34 102 1 1 FY15
35 103 1 1 FY15
36 104 1 1 FY15
37 101 2 1 FY15
38 102 2 1 FY15
39 103 2 1 FY15
40 101 2 2 FY15
41 102 2 2 FY15
42 103 2 2 FY15
43 101 3 1 FY15
44 102 3 1 FY15
45 101 3 2 FY15
46 102 3 2 FY15
47 101 3 3 FY15
48 102 3 3 FY15
用dplyr对其进行总结
d1 <- df %>%
group_by(CourseID, Session, Fiscal.Year) %>%
summarise(n=length(ID))
d1%
分组依据(课程、会议、财政年度)%>%
总结(n=长度(ID))
再三
d2 <- d1 %>%
group_by(Fiscal.Year) %>%
summarise(d1 = length(n[n <= 2]),
d2 = length(n[n < 4]),
d3 = length(n[n <= 4])
)
library(reshape2)
d3 <- melt(d2)
ggplot(d3, aes(Fiscal.Year, value, fill = variable)) +
geom_bar(stat = 'identity', position = 'dodge')
d2%
集团单位(会计年度)%>%
总结(d1=长度(n[n您能提供一些真实数据或更接近它的数据吗?summary(n=长度(ID))
可以是summary(n=n())
@jazzurro true!但对我来说,这个习语并不是最具教育意义的。这看起来很像我想要的!我回来后必须在工作中测试它,但我没有想到使用plyr两次,然后将结果融化回数据框中。另外,%%>%应该是%.%吗?如果不是,%>%到底做了什么?不管怎样,这都解决了一个问题我在过去的一周里一直没有弄清楚,所以谢谢你!我会测试它,并在一切检查完毕后接受。@KyleSykes是的,%%>%应该是%.%.同样的行为。dplyr的习惯用法是接受使用%>%这样的管道。@KyleSykes你有没有让它工作并设法对最终的情节进行分面处理?