-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstaffing.r
93 lines (84 loc) · 3.55 KB
/
staffing.r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Load the packages we plan to use
library(magrittr)
library(dplyr)
library(tidyr)
library(reshape2)
library(ggplot2)
library(shiny)
# Read the data
read.csv("CSV data/K12headcount_salary.csv", header=TRUE, strip.white = TRUE) -> staffing
# Checking the numbers in K12headcount_salary.csv vs. K12headcount_school.csv
# They are *close*, but not exactly the same
staffing %>%
filter(SUName == "Burlington SD") %>%
group_by(SY) %>%
summarise(FTESum=sum(TOTFTE),SALSum=sum(SAL),BenSum=sum(BEN),SubClass="Total") %>%
mutate(maxFTE=max(FTESum),FTERatio=FTESum/maxFTE) -> TotStaff
print(TotStaff)
read.csv("CSV data/K12headcount_school.csv", header=TRUE, strip.white = TRUE) %>%
filter(SUName == "Burlington SD") %>%
group_by(Fiscal.Year) %>%
summarise(EnrollmentSum=sum(Enrollment),
K12FTESum=sum(K12FTE),
TotStaffFTESum=sum(TotStaffFTE))
# Total staff
staffing %>%
filter(SUName == "Burlington SD") %>%
filter(SubClass!="#N/A") %>%
filter(SubClass!="Other") %>%
group_by(SY,SubClass) %>%
summarise(FTESum=sum(TOTFTE),SALSum=sum(SAL),BenSum=sum(BEN))%>%
mutate(maxFTE=max(FTESum),FTERatio=FTESum/maxFTE) %>%
ggplot(aes(x=SY, y=FTESum, color=SubClass)) + geom_line() +
labs(x="School Year",y="FTE Staff") + scale_x_continuous(breaks = seq(2008,2017,2))
# Staff ratio to maximum year
staffing %>%
filter(SUName == "Burlington SD") %>%
filter(SubClass!="#N/A") %>%
filter(SubClass!="Other") %>%
group_by(SubClass,SY) %>%
summarise(FTESum=sum(TOTFTE),SALSum=sum(SAL),BenSum=sum(BEN))%>%
mutate(maxFTE=max(FTESum),FTERatio=FTESum/maxFTE)%>%
bind_rows(TotStaff) %>%
ggplot(aes(x=SY, y=FTERatio, color=SubClass)) + geom_line() +
labs(x="School Year",y="FTE Staff") + scale_x_continuous(breaks = seq(2008,2017,2))
# Salary
staffing %>%
filter(SUName == "Burlington SD") %>%
filter(SubClass!="#N/A") %>%
filter(SubClass!="Other") %>%
group_by(SubClass,SY) %>%
summarise(FTESum=sum(TOTFTE),SalSum=sum(SAL),BenSum=sum(BEN))%>%
mutate(maxFTE=max(FTESum),FTERatio=FTESum/maxFTE,SalRatio=SalSum/FTESum)%>%
ggplot(aes(x=SY, y=SalSum, color=SubClass)) + geom_line() +
labs(x="School Year",y="Salary") + scale_x_continuous(breaks = seq(2008,2017,2))
# Salary per FTE
staffing %>%
filter(SUName == "Burlington SD") %>%
filter(SubClass!="#N/A") %>%
filter(SubClass!="Other") %>%
group_by(SubClass,SY) %>%
summarise(FTESum=sum(TOTFTE),SalSum=sum(SAL),BenSum=sum(BEN))%>%
mutate(maxFTE=max(FTESum),FTERatio=FTESum/maxFTE,SalRatio=SalSum/FTESum)%>%
ggplot(aes(x=SY, y=SalRatio, color=SubClass)) + geom_line() +
labs(x="School Year",y="Salary per FTE") + scale_x_continuous(breaks = seq(2008,2017,2))
# Benefits
staffing %>%
filter(SUName == "Burlington SD") %>%
filter(SubClass!="#N/A") %>%
filter(SubClass!="Other") %>%
group_by(SubClass,SY) %>%
summarise(FTESum=sum(TOTFTE),SalSum=sum(SAL),BenSum=sum(BEN))%>%
mutate(FTERatio=FTESum/max(FTESum),SalRatio=SalSum/FTESum,BenRatio=BenSum/FTESum)%>%
ggplot(aes(x=SY, y=BenSum, color=SubClass)) + geom_line() +
labs(x="School Year",y="Benefits") + scale_x_continuous(breaks = seq(2008,2017,2))
# Benefits per FTE
staffing %>%
filter(SUName == "Burlington SD") %>%
filter(SubClass!="#N/A") %>%
filter(SubClass!="Other") %>%
group_by(SubClass,SY) %>%
summarise(FTESum=sum(TOTFTE),SalSum=sum(SAL),BenSum=sum(BEN))%>%
mutate(FTERatio=FTESum/max(FTESum),SalRatio=SalSum/FTESum,BenRatio=BenSum/FTESum)%>%
ggplot(aes(x=SY, y=BenRatio, color=SubClass)) + geom_line() +
labs(x="School Year",y="Benefits per FTE") + scale_x_continuous(breaks = seq(2008,2017,2))