University of Texas at Austin, Fall 2021
Every semester the CONNECT Program pairs community organizations with graduate students with data and evaluation skills. As the program has expanded, the matching process has become more complicated, necesitating improved program efficiency. The following document outlines how survey data is taken from Qualtrics, cleaned and sorted, and then matched using the Gale-Shapley Algorithm. Some descriptive data visualizations were included as well to give program managers a snap shot of the semester cohort.
Using the qualtRics package the organization and student surveys were pulled directly from Qualtrics. In order to connect to the Qualtrics API, you must have UT staff privledges. Any UT student must have their privledges updated by contacting UT IT Services. Your Qualtrics API can be accessed through account settings in the “Qualtrics IDs” section.
# Connecting to the Qualtrics API
qualtrics_api_credentials(
api_key = Sys.getenv("qualtrics_key"),
base_url = "ca1.qualtrics.com",
install = FALSE
)
#Pulling the organization and students surveys
surveys <- all_surveys()
#Finding the row index for organization and student surveys
stu_number <- which(surveys$name=="08.CONNECT- Fall 2021", arr.ind=TRUE)
org_number <- which(surveys$name=="Matching Form_Fall 2021", arr.ind=TRUE)
#Fetching the Survey Contents
org_raw <- fetch_survey(surveyID = surveys$id[org_number], force_request = TRUE)
stu_raw <- fetch_survey(surveyID = surveys$id[stu_number], force_request = TRUE)
Project CONNECT continues to offer a diverse set of projects to students. The word cloud below shows the most common words located in the project deliverables section.
library(wordcloud)
library(RColorBrewer)
library(tm) # to create corpus
library(wordcloud2)
library(htmlwidgets)
org <- org_raw
colnames(org) <- label(org)
org <- org |>
clean_names() |>
filter(which_connect_program_is_this_project_affiliated_with == "RGK Center")
# Create a vector containing only the text
text <- org$project_deliverables
# Create a corpus
docs <- Corpus(VectorSource(text))
# standardize corpus
docs <- docs %>%
tm_map(removeNumbers) %>%
tm_map(removePunctuation) %>%
tm_map(stripWhitespace)
docs <- tm_map(docs, content_transformer(tolower))
docs <- tm_map(docs, removeWords, stopwords("english"))
# create a document matrix
dtm <- TermDocumentMatrix(docs)
matrix <- as.matrix(dtm)
words <- sort(rowSums(matrix), decreasing = TRUE)
df <- data.frame(word = names(words), freq = words)
df$word <- as.character(df$word)
target <- c("also", "project", "really", "helpful", "able", "helped", "felt", "wasnt", "etc", "asks", "move", "gave")
"%ni%" <- Negate("%in%")
df <- filter(df, word %ni% target)
df$word <- as.factor(df$word)
set.seed(27)
w1 <-
wordcloud2(data = df,
color = rep_len(
c("#264653", "#2A9D8F", "#E9C46A", "#F4A261", "#E76F51"),
nrow(df)
),
shuffle = FALSE)
w1
proj_des <- org |>
select(
project_name,
project_goal,
project_deliverables,
what_other_relevant_skills_would_be_helpful_for_your_candidate_to_have_i_e_other_languages_spoken_coding_analytical_software_professional_skills_etc_list_them_here
) |>
rename(
Project = project_name,
Goal = project_goal,
Deliverables = project_deliverables,
"Other Considerations" = what_other_relevant_skills_would_be_helpful_for_your_candidate_to_have_i_e_other_languages_spoken_coding_analytical_software_professional_skills_etc_list_them_here
) |>
arrange(Project) |>
mutate(`Other Considerations` = replace_na(`Other Considerations`, ""),
Deliverables = gsub('(\\s\\d)\\)', '<br><br>\\1\\.', Deliverables))
kbl(proj_des, escape = F) |>
kable_minimal("hover", full_width = T) |>
scroll_box(width = "100%", height = "600px")
| Project | Goal | Deliverables | Other Considerations |
|---|---|---|---|
| Andy Roddick Foundation | To share back findings from LATT’s data collection efforts with its member organizations in an exciting and useful way. |
|
Experience with data visualization required (e.g. Tableau, Power BI, Google Data Studio) |
| Camp Fire Central Texas | To streamline the data collection and reporting processes for Camp Fire Central Texas’ Play-To-Learn program. |
|
Spanish proficiency required |
| Community Advancement Network | To continue automating CAN’s ability to pull, clean, and analyze indicator data from the American Community Survey (ACS) database. |
|
|
| Family Eldercare | To improve Family Eldercare’s ability to measure and track the effectiveness of its Aging Services pilot program at Community First! Village. |
|
interest in and/or experience with policy in the areas of housing homelessness, aging and/or program evaluation in human services preferred |
| Financial Health Pathways | To conduct a financial health assessment for the Central Texas region. |
|
Spanish proficiency required; experience using Qualtrics preferred |
| Impact Austin | To improve Impact Austin’s ability to assess its effectiveness at fulfilling its mission. |
|
student with a skillset and desire to work on a logic model preferred |
| Impact Factory | To enhance our system for collecting and storing data for the Early Bird study and to support the Early Bird study’s ongoing data collection, entry and analysis. |
|
Previous experience with Qualtrics, data analysis REDCap and participant surveys preferred |
| PelotonU | To understand how the changes made to PelotonU’s academic onboarding (AO) curriculum are impacting students. |
|
experience with Tableau or data visualization in R strongly preferred |
| Texas Rural Funders | To increase the visibility of Connected Nation Texas’ high-quality, broadband data sets and ensure they are accessible/usable to all stakeholders. |
|
strong writing skills and previous experience working with qualitative data preferred |
| Urban School Food Alliance | To develop a customized data pulling protocol for all 15 of Urban School Food Alliance’s school district members. |
|
Familiarity or understanding of public K-12 school foodservice, or school district financial reporting preferred; familiarity or experience with state agency data reporting preferred |
| Walking by Faith Prison Ministry | To communicate the connections between lived trauma and recidivism rates in Texas and Travis County. |
|
|
| Young Invincibles - project #1 | To better understand and display the mental health resource landscape of college campuses across Texas. |
|
|
| Young Invincibles - Project #2 | To improve Young Invincible’s ability to track and measure the short-, mid-, and long-term outcomes of its young advocate programs. |
|
There were 13 projects, but some of them involve multiple buckets. Of note, this semester there were zero web design projects.
buckets <- org |>
select(organization, 29:34) |>
pivot_longer(col = 2:7,
names_to = "bucket_",
values_to = "bucket") |>
select(organization, bucket) |>
drop_na() |>
group_by(bucket) |>
count() |>
mutate(bucket = case_when(
bucket == "Data Collection & Tool Development" ~ "Data Collection &\n Tool Development",
bucket == "Data Interpretation & Analysis" ~ "Data Interpretation &\n Analysis",
bucket == "Business Intelligence & Advanced Analytics" ~ "Business Intelligence &\n Advanced Analytics",
TRUE ~ bucket
)) |>
arrange(n)
theme_set(theme_classic())
g <- ggplot(buckets, aes(x = reorder(bucket, n), y = n)) +
geom_bar(stat = "identity", fill = "#2A9D8F") +
geom_text(aes(label = n, y = n),
position = position_stack(vjust = 0.5),
size = 8) +
coord_flip()+
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_blank(),
text = element_text(
size = 16,
face = "bold"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks = element_blank(),
axis.text.x=element_blank(),
plot.title = element_text(hjust = 0.5),
plot.margin = margin(10, 10, 10, 10),
legend.title = element_blank(),
legend.position = "none",
) +
labs(title = "CONNECT Fall 2021 Project buckets", y = "Number", fill = "Buckets")
g
The following chart was constructed by counting every student who put at least a 2 under each skill.
stu <- stu_raw
colnames(stu) <- label(stu)
stu <- stu |>
clean_names() |>
filter(progress == 100) |>
select(first_name, 64:88)
names(stu) <-
gsub(pattern = "please_rate_your_experience_in_the_following_technical_skills_note_1_not_experienced_and_5_extremely_experienced_",
replacement = "",
x = names(stu))
names(stu) <- gsub(pattern = "_",
replacement = " ",
x = names(stu))
names(stu) <- str_to_title(names(stu))
stu2 <- stu |>
pivot_longer(col = 2:26,
names_to = "Skill",
values_to = "Rating") |>
#Setting students who put 1 to NA
mutate(Rating = na_if(Rating, 1)) |>
drop_na() |>
group_by(Skill) |>
count()
theme_set(theme_classic())
g <- ggplot(stu2, aes(x = reorder(Skill, n), y = n)) +
geom_bar(stat = "identity", fill = "#F4A261") +
geom_text(aes(label = n, y = n),
position = position_stack(vjust = 0.5),
size = 6) +
coord_flip() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_blank(),
text = element_text(size = 16,
face = "bold"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
plot.title = element_text(hjust = 0.5),
plot.margin = margin(10, 10, 10, 10),
legend.title = element_blank(),
legend.position = "none"
) +
labs(title = "CONNECT Fall 2021 Student Skills")
g
The data from Qualtrics can be messy. Many of the variables names default to the question number. In order to make the variable names more descriptive, the actual question description is substituted. This causes the variable names to be rather long. To reduce the length of variable names, many of them have been renamed, and the stringr package was used to remove repetitive words.
Ordinal questions for both student and organization surveys were converted to a numeric scale. For example, for the question “How much working or volunteering with nonprofits should your candidate have?” the responses were converted from 1 to 5, with “No experience required” being 1 and “2 or more years” being 5. This is done because the algorithm can only compare numeric values.
org <- org_raw
#Assigning variable names
colnames(org) <- label(org)
org <- org |>
clean_names() |>
#Specify here which school to filter by
filter(which_connect_program_is_this_project_affiliated_with == "RGK Center") |>
rename(
time_commitment = realistically_how_much_time_do_you_expect_your_student_to_commit_per_week_working_on_your_assigned_project,
transportation = does_your_candidate_need_to_have_access_to_transportation,
flexible_hours = will_your_project_permit_flexible_work_hours,
remote = will_your_candidate_be_able_to_work_remotely,
nonprofit_experience = how_much_experience_working_or_volunteering_with_nonprofits_should_your_candidate_have_working_or_volunteering_for_nonprofits
) |>
select(
organization,
project_name,
project_goal,
project_deliverables,
transportation,
flexible_hours,
remote,
time_commitment,
nonprofit_experience,
40:64
) |>
mutate(
nonprofit_experience = case_when(
nonprofit_experience == "No experience required" ~ "1",
nonprofit_experience == "Less than 6 months" ~ "2",
nonprofit_experience == "6 - 12 months" ~ "3",
nonprofit_experience == "1 - 2 years" ~ "4",
nonprofit_experience == "2 or more years" ~ "5",
),
time_commitment = case_when(
time_commitment == "Less than 5 hours per week" ~ "1",
time_commitment == "5 - 10 hours per week" ~ "2",
time_commitment == "8 - 12 hours per week" ~ "3",
time_commitment == "10 - 15 hours per week" ~ "4",
time_commitment == "15 - 20 hours per week" ~ "5"
)
) |>
arrange(project_name)
names(org) <-
gsub(pattern = "please_rate_how_relevant_the_following_technical_skills_are_to_your_project_",
replacement = "",
x = names(org))
org <- data.frame(lapply(org, function(x) {
gsub("1 - Not relevant", "1", x)
}))
org <- data.frame(lapply(org, function(x) {
gsub("5 - Extremely relevant", "5", x)
}))
org <- org |>
mutate(across(8:34, as.numeric))
#For Table
org_table <- org |>
select(-c(organization, project_deliverables, project_goal))
names(org_table) <- gsub(pattern = "_",
replacement = " ",
x = names(org_table))
names(org_table) <- str_to_title(names(org_table))
cell_color <- function(x) {
x = cell_spec(x,
color = spec_color(x, end = .7),
bold = T,)
}
org_table <- org_table |>
select(-Transportation, -`Flexible Hours`,-Remote, everything()) |>
mutate(across(2:28, cell_color))
kbl(org_table, escape = F) |>
kable_material(c("hover", "striped", "condensed"), full_width = F) |>
scroll_box(width = "100%", height = "400px")
| Project Name | Time Commitment | Nonprofit Experience | Tableau | Literature Review | Conducting Interviews | Program Evaluation | Logic Modeling | Html | Arc Gis | Outcomes Definition | Microsoft Office Suite | Google Data Studio | R Shiny | Statistical Analysis | Consulting | Baseline Data Identification | Machine Learning | Project Management | Survey Design | Sql | R | Javascript | Data Mining | Java | Python | Css | Power Bi | Transportation | Flexible Hours | Remote |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Andy Roddick Foundation | 3 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 5 | 3 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 5 | No | Yes | Yes |
| Camp Fire Central Texas | 2 | 3 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Community Advancement Network | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | No | Yes | Yes |
| Family Eldercare | 2 | 3 | 1 | 5 | 5 | 1 | 3 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Financial Health Pathways | 2 | 3 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Impact Austin | 2 | 3 | 1 | 5 | 5 | 5 | 5 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Impact Factory | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| PelotonU | 4 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Texas Rural Funders | 2 | 3 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Urban School Food Alliance | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 3 | 1 | 3 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Walking by Faith Prison Ministry | 1 | 1 | 1 | 5 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Young Invincibles - project #1 | 3 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 3 | 3 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 4 | 1 | 1 | 1 | 3 | No | Yes | Yes |
| Young Invincibles - Project #2 | 2 | 4 | 1 | 1 | 1 | 3 | 3 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
Overall, 13 organizations were included in this cohort.
stu <- stu_raw
colnames(stu) <- label(stu)
stu <- stu |>
clean_names() |>
filter(progress == 100) |>
select(
first_name,
last_name,
is_there_any_additional_information_regarding_your_availability_that_we_should_know_about,
do_you_have_access_to_transportation,
do_you_need_flexible_work_hours,
do_you_need_the_ability_to_work_remotely,
realistically_how_much_time_can_you_commit_per_week_to_working_on_a_project,
over_the_past_5_years_approximately_how_much_experience_have_you_had_working_or_directly_volunteering_with_nonprofit_organizations,
64:90
) |>
rename(
time_commitment = realistically_how_much_time_can_you_commit_per_week_to_working_on_a_project,
transportation = do_you_have_access_to_transportation,
flexible_hours = do_you_need_flexible_work_hours,
remote = do_you_need_the_ability_to_work_remotely,
nonprofit_experience = over_the_past_5_years_approximately_how_much_experience_have_you_had_working_or_directly_volunteering_with_nonprofit_organizations,
relevant_skills = do_you_have_other_relevant_skills_that_may_be_helpful_for_us_to_know_about_i_e_other_languages_spoken_list_them_here_note_separate_each_skill_with_a_comma,
target_population = every_semester_the_connect_program_works_with_organizations_that_serve_many_different_target_populations_are_there_any_specific_populations_that_youre_interested_in_working_with
) |>
mutate(nonprofit_experience = case_when(
nonprofit_experience == "No experience (yet!)" ~ "1",
nonprofit_experience == "Less than 6 months" ~ "2",
nonprofit_experience == "6 - 12 months" ~ "3",
nonprofit_experience == "1 - 2 years" ~ "4",
nonprofit_experience == "2 or more years" ~ "5",
))
names(stu) <- gsub(pattern = "please_rate_your_experience_in_the_following_technical_skills_note_1_not_experienced_and_5_extremely_experienced_",
replacement = "",
x = names(stu))
stu$time_commitment[stu$time_commitment == "Less than 5 hours per week"] <- "1"
stu$time_commitment[stu$time_commitment == "5 - 10 hours per week"] <- "2"
stu$time_commitment[stu$time_commitment == "8 - 12 hours per week"] <- "3"
stu$time_commitment[stu$time_commitment == "10 - 15 hours per week"] <- "4"
stu$time_commitment[stu$time_commitment == "15 - 20 hours per week"] <- "5"
stu <- stu |>
mutate(across(7:33, as.numeric)) |>
mutate(name = paste0(first_name," ", last_name)) |>
select(name, time_commitment, 4:35) |>
arrange(str_extract(name,'\\s.*$'))
#For table
stu_table <- stu |>
select(-c(relevant_skills, target_population))
names(stu_table) <- gsub(pattern = "_",
replacement = " ",
x = names(stu_table))
names(stu_table) <- str_to_title(names(stu_table))
cell_color <- function(x) {
x = cell_spec(x,
color = spec_color(x, end = .7),
bold = T,
)
}
stu_table <- stu_table |>
select(-Transportation,-`Flexible Hours`, -Remote, everything()) |>
mutate(across(2:28, cell_color))
kbl(stu_table, escape = F) |>
kable_material(c("hover", "striped", "condensed"), full_width = F) |>
scroll_box(width = "100%", height = "400px")
| Name | Time Commitment | Nonprofit Experience | Literature Review | Program Evaluation | Consulting | Project Management | Baseline Data Identification | Logic Modeling | Outcomes Definition | Survey Design | Conducting Interviews | Data Mining | Statistical Analysis | Sql | Machine Learning | Html | Css | Java | Python | Tableau | Microsoft Office Suite | R | R Shiny | Arc Gis | Power Bi | Google Data Studio | Javascript | Transportation | Flexible Hours | Remote |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Caitlin Arenas Martinez | 2 | 5 | 3 | 3 | 5 | 5 | 2 | 3 | 3 | 3 | 5 | 3 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Sidney Beaty | 3 | 3 | 4 | 3 | 2 | 3 | 3 | 3 | 3 | 4 | 3 | 4 | 5 | 2 | 2 | 1 | 1 | 1 | 3 | 2 | 5 | 3 | 1 | 5 | 1 | 3 | 1 | Yes | Yes | Yes |
| Erin Benton | 4 | 5 | 5 | 4 | 5 | 5 | 4 | 5 | 5 | 5 | 5 | 4 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 3 | 1 | 3 | 1 | 1 | 1 | Yes | Yes | Yes |
| Debasmita Bhakta | 2 | 1 | 4 | 1 | 4 | 4 | 1 | 1 | 1 | 1 | 3 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Katherine Bowman | 2 | 5 | 1 | 1 | 1 | 4 | 3 | 1 | 1 | 1 | 4 | 1 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 2 | 5 | 2 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | No |
| Da’Shon Carr | 3 | 5 | 4 | 5 | 4 | 4 | 4 | 3 | 3 | 5 | 5 | 5 | 2 | 1 | 2 | 2 | 1 | 1 | 1 | 3 | 5 | 4 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Vanessa Chebli | 3 | 5 | 3 | 4 | 3 | 3 | 1 | 1 | 3 | 4 | 4 | 2 | 3 | 1 | 1 | 2 | 2 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | No | No |
| Noemi Cruz-Cruz | 3 | 5 | 3 | 4 | 4 | 5 | 4 | 3 | 3 | 2 | 5 | 2 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Alicia Danze | 2 | 5 | 5 | 3 | 3 | 3 | 2 | 2 | 2 | 4 | 5 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Katherine Dillon | 5 | 3 | 5 | 4 | 1 | 1 | 1 | 1 | 1 | 4 | 3 | 1 | 4 | 1 | 1 | 2 | 2 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 3 | Yes | Yes | Yes |
| Ram Disabar Jr. | 2 | 4 | 4 | 4 | 5 | 5 | 4 | 5 | 5 | 3 | 5 | 4 | 4 | 1 | 4 | 1 | 1 | 1 | 3 | 1 | 5 | 1 | 1 | 4 | 1 | 1 | 1 | Yes | Yes | No |
| Agnes Elimbi Moudio | 3 | 2 | 3 | 2 | 2 | 3 | 2 | 1 | 1 | 1 | 1 | 2 | 3 | 3 | 3 | 3 | 3 | 1 | 3 | 1 | 4 | 3 | 1 | 2 | 1 | 2 | 1 | Yes | Yes | Yes |
| Shelby Frye | 2 | 3 | 5 | 4 | 4 | 4 | 2 | 2 | 3 | 4 | 3 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | No |
| Jaren Gaither | 5 | 5 | 5 | 4 | 5 | 5 | 5 | 5 | 4 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 3 | 1 | 2 | 1 | 1 | 1 | Yes | Yes | No |
| Gaurav Gaur | 4 | 5 | 3 | 4 | 5 | 5 | 4 | 3 | 4 | 4 | 2 | 3 | 3 | 3 | 4 | 3 | 2 | 2 | 4 | 4 | 4 | 4 | 2 | 2 | 4 | 2 | 2 | Yes | Yes | Yes |
| Abigail Grider | 3 | 5 | 5 | 2 | 2 | 1 | 4 | 1 | 1 | 3 | 3 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | No |
| Emily Hebel | 3 | 2 | 4 | 2 | 5 | 4 | 2 | 1 | 1 | 4 | 5 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 5 | 1 | 1 | 1 | 1 | 2 | 1 | Yes | No | No |
| Chiayu Hu | 4 | 4 | 3 | 4 | 4 | 5 | 3 | 3 | 4 | 4 | 4 | 1 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 3 | 1 | No | Yes | No |
| Noah Jones | 5 | 4 | 5 | 5 | 5 | 5 | 2 | 1 | 1 | 4 | 5 | 2 | 3 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | No | No |
| Raeesa Khan | 3 | 5 | 2 | 2 | 5 | 4 | 1 | 1 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 2 | 2 | 1 | 1 | 1 | 5 | 2 | 1 | 3 | 1 | 1 | 1 | Yes | Yes | Yes |
| Michael Kiel | 5 | 5 | 4 | 3 | 3 | 5 | 4 | 2 | 4 | 3 | 4 | 2 | 4 | 1 | 1 | 2 | 1 | 1 | 3 | 3 | 5 | 1 | 1 | 5 | 1 | 2 | 1 | Yes | No | No |
| Jonathan Klan | 5 | 1 | 4 | 3 | 1 | 5 | 4 | 4 | 4 | 3 | 4 | 4 | 4 | 1 | 1 | 2 | 2 | 2 | 5 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 2 | Yes | Yes | No |
| Matthew Kojm | 4 | 4 | 3 | 4 | 3 | 4 | 3 | 1 | 1 | 3 | 1 | 2 | 3 | 4 | 1 | 1 | 1 | 1 | 3 | 5 | 5 | 2 | 1 | 2 | 2 | 1 | 1 | Yes | Yes | No |
| Liberte Manirakiza | 4 | 5 | 3 | 2 | 1 | 4 | 2 | 1 | 2 | 3 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 2 | 1 | Yes | Yes | Yes |
| Alec Mendoza | 3 | 1 | 4 | 5 | 3 | 3 | 3 | 3 | 4 | 2 | 2 | 2 | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | Yes | Yes | Yes |
| Jonathan Nieves | 2 | 1 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 2 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | Yes |
| Niina Nomura | 2 | 3 | 5 | 3 | 4 | 4 | 3 | 2 | 4 | 5 | 4 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 5 | 1 | 1 | 1 | 1 | 2 | 1 | Yes | Yes | No |
| Nnenna Odim | 2 | 5 | 4 | 4 | 3 | 3 | 3 | 2 | 3 | 2 | 4 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 4 | 1 | 1 | 1 | 1 | 2 | 1 | No | Yes | Yes |
| Abundance Ogodogu Chima | 2 | 4 | 3 | 4 | 2 | 4 | 3 | 1 | 3 | 3 | 4 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Patricia Romero | 2 | 5 | 3 | 4 | 1 | 4 | 1 | 1 | 1 | 1 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Philip Romike | 4 | 4 | 2 | 4 | 1 | 4 | 1 | 1 | 1 | 3 | 3 | 1 | 3 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | 4 | 1 | 1 | 3 | 1 | 1 | 1 | Yes | Yes | No |
| Lauren Rosa | 1 | 5 | 5 | 3 | 3 | 5 | 2 | 2 | 1 | 3 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 2 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | No |
| Mikhaela Sample | 2 | 4 | 4 | 3 | 2 | 5 | 2 | 4 | 3 | 2 | 4 | 2 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 4 | 1 | 3 | 2 | 1 | 1 | Yes | Yes | No |
| Christopher Shafik | 2 | 5 | 3 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 1 | 4 | 1 | 1 | 1 | 1 | 2 | 1 | Yes | No | No |
| Nidhi Shah | 1 | 1 | 3 | 4 | 4 | 4 | 1 | 1 | 1 | 3 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | No |
| Cooper Thompson | 5 | 4 | 5 | 3 | 2 | 3 | 4 | 2 | 2 | 5 | 4 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 3 | 1 | Yes | Yes | Yes |
| Alanna Uthgenannt | 3 | 5 | 5 | 4 | 4 | 4 | 2 | 2 | 3 | 5 | 5 | 1 | 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | No | Yes | No |
| Ziyi Wang | 2 | 4 | 3 | 2 | 1 | 3 | 1 | 1 | 1 | 4 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | Yes |
| Brie Winnega | 2 | 5 | 5 | 2 | 4 | 4 | 1 | 1 | 3 | 3 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 5 | 1 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | No |
| Stephan Zaparolli | 5 | 5 | 5 | 4 | 5 | 3 | 4 | 3 | 4 | 3 | 2 | 5 | 5 | 1 | 1 | 1 | 1 | 3 | 4 | 3 | 4 | 3 | 1 | 1 | 1 | 1 | 1 | Yes | Yes | No |
| emily zirbes | 2 | 5 | 5 | 5 | 5 | 5 | 3 | 2 | 3 | 3 | 5 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 2 | 3 | 4 | 2 | 1 | 2 | 3 | 1 | 1 | Yes | No | Yes |
Overall, 41 students applied during this cohort.
The following table includes student’s other relevant skills and their desired target population, which is a new question we added for this cohort.
stu_table2 <- stu |>
select(name, relevant_skills, target_population) |>
mutate(relevant_skills = replace_na(relevant_skills, ""),
target_population = replace_na(target_population, ""))
names(stu_table2) <- gsub(pattern = "_",
replacement = " ",
x = names(stu_table2))
names(stu_table2) <- str_to_title(names(stu_table2))
kbl(stu_table2, escape = F) |>
kable_minimal(c("hover"), full_width = F) |>
scroll_box(width = "100%", height = "400px")
| Name | Relevant Skills | Target Population |
|---|---|---|
| Caitlin Arenas Martinez | ||
| Sidney Beaty | My primary interest is affordable housing. | |
| Erin Benton | ||
| Debasmita Bhakta | Corporate communication, legal research and analysis, policy research and analysis, stakeholder mapping, government communication | Urban Food Alliance/ American YouthWorks/ Goodwill Central Texas/ Austin Allies/ Austin Tech Alliance |
| Katherine Bowman | I’m specifically interested in an arts or education organization, but I’m open to anything. | |
| Da’Shon Carr | I have experience in applying cultural responsive and equatable evaluation practices and methods. I have experience with DEIB (diversity, equity, inclusion, and belonging) initiatives such as helping organizations to craft a diversity statement or implement a DEIB workforce survey to improve job satisfaction and workplace culture. | My preference would be to work with nonprofits that specifically supporting youth or families with low-income backgrounds or supporting youth to achieve higher education. However, I really do not have a preference. |
| Vanessa Chebli | proficient in Salesforce, proficient in Mailchimp | I’m interested in any opportunity, but specifically social justice-oriented organizations |
| Noemi Cruz-Cruz | Spanish, Legal research, public speaking, translation and interpretation from English to Spanish, interpersonal skills, country condition research, data input, data extraction, and drafting USCIS forms and applications. | Immigrants, unaccompanied minors, Latinx community, refugees, asylums, children, and underserved populations. |
| Alicia Danze | Spanish | Until now, I have worked primarily with immigrant communities, but I am open to working with others! |
| Katherine Dillon | Fast-learner | I currently work with Title I schools which are schools with a population of 50% or higher on free and reduced lunch (a poverty measure). I would love to work with this population again and/or rural populations. |
| Ram Disabar Jr. | ||
| Agnes Elimbi Moudio | FRENCH(fluent) | |
| Shelby Frye | I am most interested in communities of oppressed genders or sexualities | |
| Jaren Gaither | I am interested in working with programs that aim to serve historically underserved populations such as African American and communities with disabilities. | |
| Gaurav Gaur | Administrative and managerial experience of handling large teams | Open to all positions, more interested in projects related to data analysis (esp. impact analysis, policy impact) |
| Abigail Grider | French langauge | women, education, migrants |
| Emily Hebel | Excel, German, qualitative and quantitative data analysis | I would love to work with other women and support disenfranchised women. |
| Chiayu Hu | Language: Chinese (Native Speaker), Google Analytics | I’m open to every organization, but I’m quite interested in people with disabilities, children/ the elderly topic, and local community operations. |
| Noah Jones | ||
| Raeesa Khan | Project Management Skills, QA work, Requirement Definition, Urdu, Hindi, Limited Spanish | I’m open to working with anyone but would love to work with organizations focused on populations impacted by Austin’s rapid growth (low income communities of color) and house-less populations. |
| Michael Kiel | Russian, German, Serbo-Croatian, Google Suite, Canva, InDesign, Google Maps, Report Writing, and Asana | I would enjoy the opportunity to work with an international organization but am also highly motivated to assist organizations in Austin, Texas, or other U.S. locations. I am primarily interested in mapping, monitoring, evaluation, and program design but would be happy anywhere that my skills match a client’s needs. |
| Jonathan Klan | ||
| Matthew Kojm | I am very interested in non-profits focused on housing and food insecurity. Volunteering at food banks and my experience as an Americorps VISTA motivated me to work on these two issues. Although, I am very open to a variety of roles. | |
| Liberte Manirakiza | Event Planning& Execution, lesson planning, Spanish, Kirundi | I’m interested in working with low income marginalized communities . |
| Alec Mendoza | ||
| Jonathan Nieves | ||
| Niina Nomura | I’m interested in serving people in poverty. | |
| Nnenna Odim | Spanish, English, Igbo, Portuguese | historically targeted populations -specifically I’d love to work with organization who serve young children (under 7) and their families; also organizations supporting those who identify as refugees, immigrants, or gender queer. I appreciate you for asking and organizing this program. |
| Abundance Ogodogu Chima | Teaching, Organizing, French language | Women and Girls |
| Patricia Romero | I am a native Spanish speaker. Not formally trained. | women of color of from different age ranges. |
| Philip Romike | infrastructure cost estimating, flood map reading, formal benefit-cost analysis experience | disaster survivors, “social infrastructure”, public trusts, recovery communities |
| Lauren Rosa | REDCap, Data organization, Asana, Canva, Wix, Wordpress | Not particularly! I liked Foundation Communities this summer. |
| Mikhaela Sample | ||
| Christopher Shafik | ||
| Nidhi Shah | ||
| Cooper Thompson | Qualtrics, Google Drive Suite, Japanese, Spanish, French, Google Analytics, Google Ads | I am especially interested in ESL populations, as well as disabled communities, as accessibility, both lingual and physical, is the primary focus of my thesis projects. |
| Alanna Uthgenannt | interpersonal communication, customer service, Stata | low-wage workers, women |
| Ziyi Wang | ||
| Brie Winnega | I’m open to all types of projects, but anything geared toward health or disability advocacy would be especially meaningful to me | |
| Stephan Zaparolli | I am a fluent spanish speaker. | Not necessarily. |
| emily zirbes | International Business, Teaching, Human Resources, Management, Customer Service | I am excited and enthusiastic to be involved with any project I can add a positive value to! |
In order to use the matching Algorithm, students and organizations have to be assigned a utility ratings. These ratings are formulated by comparing how similar the students’ skills and nonprofit experience are to the project expectations.
Each student receives a utility score for each organization, and each organization is assigned a utility sore for each student. This ensures that both the student’s and organization’s rankings are taken into account for the matching process. For example, if an organization assigns two students the same utility score, but one student has a higher utility score for that organization, this student is selected and the other student returns to the selection pool.
The code block below was used to calculate Caitlin Arenas Martinez’s utility rating for Andy Roddick Foundation. Each skill is compared by subtracting the student value from the organization’s. If the result equals 0 or greater, that means the student’s skill rating meets or exceeds what the organization’s project requires and the skill receives a utility rating of 1. If the result is a negative number, that means the organizations requirements exceed what the student put on their survey form, and they receive a utility rating less than one, depending on how far the student’s answer was from the organizations.
Additionally, if a student put a 1 on a skill, which means they have no background in it, they automatically receive a zero utility rating. Students who don’t match the organization based on the logistics questions, also receive a utility rating of zero.
Finally, all of the skill utility ratings are added up to produce one utility rating for Caitlin Arenas Martinez and Andy Roddick Foundation. The higher the number, the greater the utility the student will have for that project.
#Initial Data Manipulation
org1 <- org[1, ] |>
pivot_longer(9:34, names_to = "variable", values_to = "org_value")
stu1 <- stu[1, ] |>
pivot_longer(6:31, names_to = "variable", values_to = "student_value")
#Assigning a utility score for each skill
match1 <- left_join(org1, stu1, by = "variable") |>
mutate(
subtracted = student_value - org_value,
utility = case_when(
subtracted >= 0 ~ 1,
subtracted == -1 ~ .75,
subtracted == -2 ~ .5,
subtracted == -3 ~ .25,
subtracted == -4 ~ 0
),
#if the student put 1 on their survey it means
#they would provide 0 utility for that skills
utility = case_when(
student_value == 1 ~ 0,
TRUE ~ utility),
#If the students logistics don't match up with the orgs
#Then the utility for that student changes to 0
utility = case_when(
transportation.x == "Yes" & transportation.y == "No" ~ 0,
flexible_hours.x == "No" & flexible_hours.y == "Yes" ~ 0,
remote.x == "No" & remote.y == "Yes" ~ 0,
TRUE ~ utility
),#If the orgs time commitment is greater than what the student
#is willing to work their utility is set to 0
utility = case_when(
time_commitment.x > time_commitment.y ~ 0,
TRUE ~ utility
)
)
utility_score <- sum(match1$utility)
print(paste0(stu[1,1],"'s utility for ",org[1,1], ": ", utility_score))
[1] "Caitlin Arenas Martinez's utility for Andy Roddick Foundation: 0"
For simplicity sake, only the organization utility scores are shown below because their preference matters more in the event of an unsuitable first match. Higher organization utility scores mean that the student is better suited to the organization’s project.
#utility organizations
row_names <- stu$name
column_names <- org$project_name
uO <- matrix(nrow = length(stu$name),
ncol = length(org$project_name),
dimnames = list(row_names, column_names))
for (j in 1:length(stu$name)) {
for (i in 1:length(org$project_name)) {
org1 <- org[i,] |>
pivot_longer(9:34, names_to = "variable", values_to = "org_value")
stu1 <- stu[j,] |>
pivot_longer(6:31, names_to = "variable", values_to = "student_value")
match1 <- left_join(org1, stu1, by = "variable") |>
mutate(
subtracted = org_value - student_value,
utility = case_when(
subtracted <= 0 ~ 1,
subtracted == 1 ~ .75,
subtracted == 2 ~ .5,
subtracted == 3 ~ .25,
subtracted >= 4 ~ 0
),
utility = case_when(
org_value == 1 ~ 0,
TRUE ~ utility),
utility = case_when(
transportation.x == "Yes" & transportation.y == "No" ~ 0,
flexible_hours.x == "No" & flexible_hours.y == "Yes" ~ 0,
remote.x == "No" & remote.y == "Yes" ~ 0,
TRUE ~ utility
),
utility = case_when(time_commitment.x > time_commitment.y ~ 0,
TRUE ~ utility)
)
utility_score <- sum(match1$utility)
uO[j, i] <- utility_score
}
}
#Table Styling
cell_color <- function(x) {
x = cell_spec(x,
color = spec_color(x, end = .7),
bold = T,
)
}
uO_table <- as.data.frame(uO) |>
mutate(across(1:9, cell_color))
kbl(uO_table, escape = F) |>
kable_material(c("hover", "striped", "condensed"), full_width = F) |>
scroll_box(width = "100%", height = "400px")
| Andy Roddick Foundation | Camp Fire Central Texas | Community Advancement Network | Family Eldercare | Financial Health Pathways | Impact Austin | Impact Factory | PelotonU | Texas Rural Funders | Urban School Food Alliance | Walking by Faith Prison Ministry | Young Invincibles - project #1 | Young Invincibles - Project #2 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Caitlin Arenas Martinez | 0 | 3.5 | 0.25 | 4.5 | 3 | 4 | 0.75 | 0 | 3.5 | 4.25 | 1.50 | 0.00 | 4.00 |
| Sidney Beaty | 3.5 | 3.75 | 1.5 | 4.5 | 2.5 | 3.75 | 1.75 | 0 | 3 | 4.50 | 1.75 | 5.75 | 4.00 |
| Erin Benton | 2.75 | 4 | 0.75 | 6 | 3 | 5.75 | 1.75 | 1.25 | 4 | 4.75 | 2.00 | 4.75 | 5.00 |
| Debasmita Bhakta | 0 | 1.5 | 0.25 | 2.25 | 1.5 | 1.75 | 0.25 | 0 | 2 | 2.50 | 1.75 | 0.00 | 1.25 |
| Katherine Bowman | 0 | 2 | 0 | 2.25 | 2.25 | 1.75 | 0 | 0 | 2.25 | 4.00 | 1.00 | 0.00 | 2.00 |
| Da’Shon Carr | 2.75 | 4 | 0.25 | 5.25 | 3 | 4.75 | 1.25 | 0 | 4 | 5.00 | 1.75 | 4.50 | 4.50 |
| Vanessa Chebli | 2 | 3.75 | 0.5 | 4 | 2.75 | 3.5 | 1.25 | 0 | 3.5 | 3.75 | 1.50 | 3.00 | 3.75 |
| Noemi Cruz-Cruz | 2 | 3.25 | 0.5 | 4.25 | 2.75 | 4.25 | 0.75 | 0 | 3.25 | 4.00 | 1.50 | 3.00 | 3.75 |
| Alicia Danze | 0 | 3.5 | 0.25 | 4.75 | 3 | 4 | 1 | 0 | 3.75 | 3.50 | 2.00 | 0.00 | 3.75 |
| Katherine Dillon | 1.75 | 3.25 | 0.75 | 3.75 | 2.5 | 3.25 | 1.5 | 0.75 | 2.75 | 2.75 | 2.00 | 3.00 | 3.00 |
| Ram Disabar Jr. | 0 | 3.5 | 1.25 | 5.25 | 3 | 5.5 | 1.25 | 0 | 3.5 | 4.75 | 1.75 | 0.00 | 4.50 |
| Agnes Elimbi Moudio | 2.5 | 2 | 1 | 1.75 | 1.25 | 1.5 | 0.5 | 0 | 1.5 | 3.25 | 1.00 | 4.00 | 1.75 |
| Shelby Frye | 0 | 3.75 | 0.25 | 4.5 | 2.5 | 4 | 1 | 0 | 3.25 | 3.50 | 2.00 | 0.00 | 3.75 |
| Jaren Gaither | 2.75 | 3.75 | 0.75 | 5.25 | 2.75 | 5.25 | 1.5 | 1.25 | 3.5 | 4.75 | 2.00 | 4.50 | 4.50 |
| Gaurav Gaur | 4.25 | 3.75 | 1.25 | 4.25 | 2.25 | 3.75 | 1.25 | 2 | 3 | 4.25 | 1.25 | 6.00 | 4.50 |
| Abigail Grider | 1.75 | 2.75 | 0.5 | 3.5 | 2.5 | 2.75 | 1 | 0 | 2.75 | 3.50 | 2.00 | 2.75 | 2.75 |
| Emily Hebel | 2.5 | 2.75 | 1.25 | 3.75 | 2.75 | 2.75 | 1.5 | 0 | 3.5 | 3.25 | 1.75 | 3.25 | 2.50 |
| Chiayu Hu | 2.25 | 3.75 | 0.25 | 4.75 | 2.75 | 4.25 | 1 | 0.25 | 3.5 | 4.00 | 1.50 | 3.00 | 4.50 |
| Noah Jones | 2 | 3.25 | 0.5 | 4.25 | 3 | 4 | 1.25 | 0.5 | 3.75 | 3.75 | 2.00 | 3.00 | 3.25 |
| Raeesa Khan | 2 | 3 | 0.25 | 2.75 | 2 | 2.25 | 0.5 | 0 | 2.5 | 3.50 | 1.00 | 3.25 | 3.00 |
| Michael Kiel | 3 | 3.5 | 1.25 | 4.5 | 2.75 | 4 | 1.25 | 1.25 | 3.25 | 4.25 | 1.75 | 4.50 | 4.00 |
| Jonathan Klan | 1.75 | 3 | 1.75 | 4.25 | 2.25 | 4 | 1.25 | 0.75 | 2.25 | 4.00 | 1.75 | 3.75 | 3.50 |
| Matthew Kojm | 3.5 | 3 | 1 | 2.5 | 2 | 2.25 | 1 | 1.75 | 2.5 | 4.25 | 1.00 | 4.75 | 3.00 |
| Liberte Manirakiza | 1.25 | 3 | 0 | 3.75 | 3 | 3 | 0.5 | 0 | 3 | 3.75 | 1.50 | 2.50 | 3.00 |
| Alec Mendoza | 3 | 2.75 | 0.75 | 3.5 | 1.5 | 3.75 | 0.75 | 0 | 2 | 2.75 | 1.50 | 4.50 | 3.25 |
| Jonathan Nieves | 0 | 2.25 | 0 | 2.25 | 1.75 | 2 | 0.25 | 0 | 2.25 | 2.50 | 1.50 | 0.00 | 2.00 |
| Niina Nomura | 0 | 4 | 0.25 | 5.25 | 2.75 | 4.25 | 1.25 | 0 | 3.75 | 3.75 | 2.00 | 0.00 | 4.25 |
| Nnenna Odim | 0 | 3.25 | 0.25 | 4 | 2.5 | 4 | 0.5 | 0 | 3 | 4.00 | 1.75 | 0.00 | 3.50 |
| Abundance Ogodogu Chima | 0 | 3.5 | 0 | 3.75 | 2.75 | 3.5 | 0.5 | 0 | 3 | 3.75 | 1.50 | 0.00 | 3.50 |
| Patricia Romero | 0 | 2.5 | 0 | 2.75 | 2.25 | 3 | 0 | 0 | 2.25 | 3.50 | 1.50 | 0.00 | 2.50 |
| Philip Romike | 1.5 | 3 | 0.5 | 2.75 | 2.5 | 2.5 | 1 | 0.5 | 2.5 | 3.25 | 1.25 | 3.25 | 3.00 |
| Lauren Rosa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3.75 | 1.75 | 0.00 | 0.00 |
| Mikhaela Sample | 0 | 3.25 | 0.75 | 4.25 | 2.5 | 4.25 | 1 | 0 | 2.75 | 4.00 | 1.75 | 0.00 | 3.75 |
| Christopher Shafik | 0 | 2.25 | 0.25 | 2.5 | 2 | 2.25 | 0 | 0 | 2.25 | 3.00 | 1.50 | 0.00 | 2.25 |
| Nidhi Shah | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2.75 | 1.50 | 0.00 | 0.00 |
| Cooper Thompson | 2 | 3.75 | 0.25 | 4.75 | 2.75 | 3.75 | 1.25 | 0.25 | 3.5 | 4.25 | 2.00 | 3.25 | 4.00 |
| Alanna Uthgenannt | 2 | 4 | 0.5 | 5.25 | 3 | 4.5 | 1.5 | 0 | 4 | 3.75 | 2.00 | 2.75 | 4.25 |
| Ziyi Wang | 0 | 3 | 0 | 3.5 | 2.75 | 2.5 | 0.75 | 0 | 3 | 3.50 | 1.50 | 0.00 | 3.00 |
| Brie Winnega | 0 | 3.25 | 0 | 4.25 | 2.75 | 3.5 | 0.5 | 0 | 3.25 | 3.50 | 2.00 | 0.00 | 3.25 |
| Stephan Zaparolli | 3.5 | 3.5 | 1.75 | 4.5 | 2.25 | 4.25 | 1.5 | 2 | 2.75 | 4.75 | 1.75 | 5.00 | 4.25 |
| emily zirbes | 0 | 3.5 | 0.5 | 4.75 | 3 | 4.75 | 0.75 | 0 | 3.5 | 4.00 | 2.00 | 0.00 | 3.75 |
The matchingR package was used to quickly compute Gale-Shapley algorithm. The algorithm itself was devised to create satisfactory matches between two parties, in this case between organizations and students. You can find a full description of the pacakge and literature behind Gale-Shapley here.
#Matching Algorithm
library(matchingR)
matching = galeShapley.marriageMarket(uS, uO)
The table below shows the matching results. It also shows a list of the top three scorers for each project. For projects where there were ties, all of the ties are listed as well. Program managers can use this list to help find a match if the first wasn’t suitable.
#Creating a list of top scorerers
uO2 <- as.data.frame(uO)
org_options <- tibble::rownames_to_column(uO2, "Student")
tops <- list()
for (i in 2:ncol(org_options)) {
org_top <- org_options |>
slice_max(org_options[,i], n = 3)
tops[[i]] <- paste(org_top$Student, collapse=", ")
}
tops <- tops[-1]
top_df <- data.frame(matrix(unlist(tops), nrow=length(tops), byrow=TRUE))
#Creating a dataframe for table
org_info <- org |>
select(project_name)
students_matched <- stu |>
slice(matching$engagements) |>
bind_cols(org_info) |>
bind_cols(top_df) |>
rename(Student = name,
Project = project_name,
"Top Scores" = "matrix.unlist.tops...nrow...length.tops...byrow...TRUE.") |>
select(Project, Student,"Top Scores")
var_label(students_matched$Project) <- NULL
kbl(students_matched) |>
kable_minimal("hover", full_width = T) |>
scroll_box(width = "100%", height = "600px")
| Project | Student | Top Scores |
|---|---|---|
| Andy Roddick Foundation | Matthew Kojm | Gaurav Gaur, Sidney Beaty, Matthew Kojm, Stephan Zaparolli |
| Camp Fire Central Texas | Alanna Uthgenannt | Erin Benton, Da’Shon Carr, Niina Nomura, Alanna Uthgenannt |
| Community Advancement Network | Stephan Zaparolli | Jonathan Klan, Stephan Zaparolli, Sidney Beaty |
| Family Eldercare | Erin Benton | Erin Benton, Da’Shon Carr, Ram Disabar Jr., Jaren Gaither, Niina Nomura, Alanna Uthgenannt |
| Financial Health Pathways | emily zirbes | Caitlin Arenas Martinez, Erin Benton, Da’Shon Carr, Alicia Danze, Ram Disabar Jr., Noah Jones, Liberte Manirakiza, Alanna Uthgenannt, emily zirbes |
| Impact Austin | Jaren Gaither | Erin Benton, Ram Disabar Jr., Jaren Gaither |
| Impact Factory | Sidney Beaty | Sidney Beaty, Erin Benton, Katherine Dillon, Jaren Gaither, Emily Hebel, Alanna Uthgenannt, Stephan Zaparolli |
| PelotonU | Gaurav Gaur | Gaurav Gaur, Stephan Zaparolli, Matthew Kojm |
| Texas Rural Funders | Da’Shon Carr | Erin Benton, Da’Shon Carr, Alanna Uthgenannt |
| Urban School Food Alliance | Ram Disabar Jr. | Da’Shon Carr, Erin Benton, Ram Disabar Jr., Jaren Gaither, Stephan Zaparolli |
| Walking by Faith Prison Ministry | Cooper Thompson | Erin Benton, Alicia Danze, Katherine Dillon, Shelby Frye, Jaren Gaither, Abigail Grider, Noah Jones, Niina Nomura, Cooper Thompson, Alanna Uthgenannt, Brie Winnega, emily zirbes |
| Young Invincibles - project #1 | Michael Kiel | Gaurav Gaur, Sidney Beaty, Stephan Zaparolli |
| Young Invincibles - Project #2 | Chiayu Hu | Erin Benton, Da’Shon Carr, Ram Disabar Jr., Jaren Gaither, Gaurav Gaur, Chiayu Hu |