Quantifying extra compensations of full-time instructors at an ideal college.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
In many higher education institutions in the U.S., a full-time faculty member typically receives a base salary for 9 or 10 months, disbursed in monthly installments over the academic year or the whole year. Nevertheless, within this framework, faculty may also accrue additional income through various avenues such as administrative allowances, service allowances, over-load compensations, over-enrollment compensations, summer teaching compensations, or other similar forms of remuneration. Among these, over-load compensations (OL_COMP
) and over-enrollment compensations (OE_COMP
) stand out as the most prevalent during academic semesters, excluding summer compensations.
OL_COMP
come into play when faculty undertake teaching responsibilities exceeding the standard credit hours mandated for full-time faculty as outlined in their contractual agreements or institutional guidelines.
OE_COMP
occur when class enrollments surpass the institution’s predefined regular enrollment threshold.
With the aid of the statistical software R, publicly available class schedule data, and institutional compensation guidelines, we quantify OL_COMP and OE_COMP earned by each instructor during a semester within an exemplary higher education institution referred to as Ideal College.
Class schedule data from Ideal College
.
Listed below are examples of exemplary higher education institutions that provide publicly accessible class schedule data. A significant number of these institutions utilize software developed by Ellucian Company L.P. to generate these schedules, resulting in similarities across many datasets. However, institutions retain the autonomy to customize the display of their data, with some choosing to impose restrictions
Let’s get the class schedule data for ’Ideal College and replace original names by random names.
##Get data, clean a bit, avoid using real names library(dplyr) schedule<- read.csv("https://raw.githubusercontent.com/dawit3000/P3/master/Ideal_College_Fall_2021_Schedule.csv") schedule<-subset(schedule,schedule$INSTRUCTOR !="" & schedule$ENRLD > 2) ## will see later that when ENRLD is 2 or less, no compensation schedule<-subset(schedule, select=c("INSTRUCTOR","SUBJ", "NUMB", "ENRLD", "HRS" )) ## Choose only the columns you might need ## Replace original names by random names library(randomNames) original_names<-unique(schedule$INSTRUCTOR) random_names<-randomNames(length(original_names)) #Random names to replace original names for(i in 1:length(original_names)) { schedule[schedule == original_names[i]]<-random_names[i] } head(schedule) ## INSTRUCTOR SUBJ NUMB ENRLD HRS ## 1 Fragale, Dylan ACCT 2101 34 3 ## 2 Argueta, Luis ACCT 2102 33 3 ## 3 Fragale, Dylan ACCT 3113 7 3 ## 4 Argueta, Luis ACCT 3133 10 3 ## 5 Trujillo Gallegos, Annel ACCT 4113 9 3 ## 6 Nguyen, Mindy AENT 2833 27 3
Since instructors may teach more than one class, their names may appear in the above table more than once under the variable ‘INSTRUCTOR’. We will need the variables INSTRUCTOR
(instructor name), ENRLD
(number of students enrolled in the class) and HRS
(credit hours). Let us also create here a list of the unique instructors, INSTR_i, i=1,2,3, ...,
for future use.
INSTR <-unique(schedule[c("INSTRUCTOR")]) INSTR <- arrange(INSTR, INSTRUCTOR) head(INSTR) ## INSTRUCTOR ## 1 Akquia, Shamika ## 2 Alemayehu, Jonaiyah ## 3 Allen, Elias ## 4 Anaya, Savannah ## 5 Anderson, Jha Nae ## 6 Andrew, Sylvie
Guidelines of Ideal College
for OL_COMP
and OE_COMP
:
- The standard teaching load for a full-time Instructor at this college is 12 credit hours, with a recommended student enrollment range of 10 to 30 students per class.
- Classes with an enrollment (
ENRLD
) of less than 3 will not qualify forOL_COMP
. It’s advised to teach such classes within the regular load or consider cancellation. - Instructors teaching more than 12 credit hours will receive
OL_COMP
for each additional credit hour if the enrollment in those extra classes is 3 or more. - For classes with normal enrollment (10 to 30 students), compensation is calculated at a rate of
$1000
per credit hour, resulting inOL_COMP = 1000*(#_of_credit_hours).
- If a class has an enrollment in the range 3 to 9 and is considered for over-load compensation, compensation will be prorated based on the 10-student minimum requirement for standard enrollment:
OL_COMP = (#_of_students/10)*1000*(#_of_credit_hours).
- Classes with an enrollment exceeding 30 students will be considered over-enrolled, and instructors will be compensated for the additional students based on a prorated scale relative to the standard maximum enrollment of 30:
OE_COMP = (#_of_extra_students/30)*1000*(#_of_credit_hours).
OL_COMP
calculations begin with the lowest-enrollment class withENRLD
greater than or equal to 3 and continue up until the standard load of 12 credit hours is reached.
Implementing OL_COMP
and OE_COMP
guidelines of Ideal College
Our approach involves iterating through each instructor (starting with i=1
) to compute their compensation according to the guidelines. Results for each instructor will be appended to a data frame df
using rbind
, forming the final output. We’ll calculate three key metrics for each instructor: OL_COMP, OE_COMP, and QOHRS (qualified overload credit hours)
, providing a simplified overview of compensations.
library("scales") df<-NULL for(i in 1:nrow(INSTR)) { output<-filter(schedule, grepl(INSTR[i, 1],schedule$INSTRUCTOR)) output<-arrange(output, desc(output$ENRLD)) # we want low ENRLD courses listed at the bottom # Calculate Over-Enrolled Payment for each course and store the sum in a variable OE_COMP OE_COMP_VEC<-"" for(j in 1:nrow(output)) { if(output$ENRLD[j]>30){OE_COMP_VEC[j]<-round((output$ENRLD[j]-30)*(1000/30)*output$HRS[j],2)} } OE_COMP<-round(sum(as.numeric(OE_COMP_VEC)),2) # OE_COMP available here # Calculate total qualified overload credit hours that exceed 12 credit hours (QOHRS) QOHRS<-max(0, sum(as.numeric(output$HRS)) - 12 , na.rm=TRUE) # Calculate OL_COMP and prorate where applicable OL_COMP<-0 m<-length(output$HRS) # so that output$HRS[m] will be the m-th credit hour p<-sum(output$HRS) #Total Credit Hours while(p>12 ){ OL_COMP<- OL_COMP + ( (min(output$ENRLD[m], 10))/10 )*(1000)* (min(output$HRS[m], p-12)) p<-p-output$HRS[m] m<-m-1 } # OL_COMP available here. # Calculate total pay from OL_COMP and OE_COMP TOTAL_COMP<-OL_COMP + OE_COMP #create the i-th data-frame to contain results INSTRUCTOR<-INSTR[i,1] df_i<-data.frame(INSTRUCTOR, QOHRS, OL_COMP, OE_COMP, TOTAL_COMP) ## Bind by row with previous outcome to get the big 'df' df<-rbind(df,df_i) } ## 'df' available here with required results df[is.na(df)]<-0 df<-subset(df, df$TOTAL_COMP !=0) # keep only instructors who are compensated head(df, n=20) ## INSTRUCTOR QOHRS OL_COMP OE_COMP TOTAL_COMP ## 4 Anaya, Savannah 0 0 133.33 133.33 ## 7 Argueta, Luis 0 0 300.00 300.00 ## 9 Awtrey, Lauren 0 0 600.00 600.00 ## 10 Bailey, Asre 7 7000 1066.66 8066.66 ## 12 Brookman, Caleb 0 0 500.00 500.00 ## 13 Brown, Daliyah 3 3000 600.00 3600.00 ## 16 Cao, Kenny 2 600 5133.33 5733.33 ## 17 Chau, Alexis 1 800 2866.67 3666.67 ## 19 Chung, Sumana 0 0 2500.00 2500.00 ## 23 Cotter, David 0 0 1333.33 1333.33 ## 25 Davis, Danielle 0 0 1900.00 1900.00 ## 28 Dennis, Leann 12 10800 2933.33 13733.33 ## 31 Early-Harris, Caerra 0 0 300.00 300.00 ## 35 Fragale, Dylan 0 0 400.00 400.00 ## 36 Funk, Scarlett 0 0 2133.34 2133.34 ## 39 Garner, Sarahray 4 2500 1900.00 4400.00 ## 40 Garrett, Jaszymn 0 0 800.00 800.00 ## 41 George, Kyle 0 0 900.00 900.00 ## 46 Harness, Kandace 1 700 500.00 1200.00 ## 49 Hernandez, Alexandria 0 0 766.66 766.66
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.