Summer 2024 Spreadsheets Workshop Survey Responses

Number of responses

Code
library(tidyverse)
library(bslib)
library(shiny)
library(bsicons)
source("scripts/helper_functions.R")

# list of workshop IDs to filter results
workshops <- c("2024-07-02-ucsb-spreadsheets")

results <- read_csv("data-joined/all_workshops.csv") %>% 
  filter(workshop %in% workshops)
  
# Fix comma separator
results <- results %>% 
  mutate(findout_select.pre = str_replace_all(
  findout_select.pre, 
  "Twitter, Facebook, etc.", 
  "Twitter; Facebook; etc."))

pre_survey <- results %>%
  select(ends_with(".pre"))

post_survey <- results %>%
  select(ends_with(".post"))

n_pre <- sum(apply(post_survey, 1, function(row) all(is.na(row))))
n_post <- sum(apply(pre_survey, 1, function(row) all(is.na(row))))
n_total <- nrow(results)
n_both <- nrow(results) - n_pre - n_post

layout_columns(
  value_box(
    title = "Total responses", value = n_total, ,
    theme = NULL, showcase = bs_icon("people-fill"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  ),
  value_box(
    title = "Both pre- and post-", value = n_both, , theme = NULL,
    showcase = bs_icon("arrows-expand-vertical"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  ),
  value_box(
    title = "Only pre-workshop", value = n_pre, ,
    theme = NULL, showcase = bs_icon("arrow-left-short"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  ),
  value_box(
    title = "Only post-workshop", value = n_post, , theme = NULL,
    showcase = bs_icon("arrow-right-short"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  )
)

Total responses

31

Both pre- and post-

12

Only pre-workshop

14

Only post-workshop

5

Departments

Code
depts <- results %>% select(dept_select.pre) %>% 
  separate_rows(dept_select.pre, sep=",") %>%
  mutate(dept_select.pre = str_trim(dept_select.pre)) %>%
  count(dept_select.pre, name = "count") %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(depts, aes(y=reorder(dept_select.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) +  
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(depts$count)*1.1))

“Other” Departments

Code
other_depts <- results %>% 
  count(dept_other.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(other_depts, aes(y=reorder(dept_other.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(other_depts$count)*1.1))
Warning in max(other_depts$count): no non-missing arguments to max; returning
-Inf

Current occupation / Career stage

Code
ocup <- results %>% select(occupation.pre) %>% 
  separate_rows(occupation.pre, sep=",") %>%
  mutate(occupation.pre = str_trim(occupation.pre)) %>%
  count(occupation.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(ocup, aes(y=reorder(occupation.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(ocup$count)*1.2))

Motivation - Why are you participating in this workshop?

Code
motiv <- results %>% select(motivation_select.pre) %>% 
  separate_rows(motivation_select.pre, sep=",")  %>% 
  mutate(motivation_select.pre = str_trim(motivation_select.pre)) %>%
  count(motivation_select.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(motiv, aes(y=reorder(motivation_select.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(motiv$count)*1.2))

How did you find out about this workshop?

Code
findw <- results %>% select(findout_select.pre) %>% 
  separate_rows(findout_select.pre, sep=",")  %>% 
  mutate(findout_select.pre = str_trim(findout_select.pre)) %>%
  count(findout_select.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(findw, aes(y=reorder(findout_select.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(findw$count)*1.2))

What you most hope to learn?

Code
results %>% group_by(workshop) %>% 
  select(workshop, hopes.pre) %>% 
  drop_na()
workshop hopes.pre
2024-07-02-ucsb-spreadsheets I work with Bren’s MEDS program and don’t have a data science background. This sounds like a good intro workshop.
2024-07-02-ucsb-spreadsheets Not sure but open-minded on the exposure. Want to learn more.
2024-07-02-ucsb-spreadsheets Ways to collect, analyze and represent data beyond what I currently do via Google Forms, Excel/Google Sheets, and manually creating graphs and charts.
2024-07-02-ucsb-spreadsheets SQL
2024-07-02-ucsb-spreadsheets good practices for dealing with lots of data in spreadsheets
2024-07-02-ucsb-spreadsheets data management and analysis skills
2024-07-02-ucsb-spreadsheets How to organize data in ways that allow us to better understand our population’s needs to then communicate actions to administration.
2024-07-02-ucsb-spreadsheets gauge my skill level and learn new skills
2024-07-02-ucsb-spreadsheets Effective use of spreadsheet software
2024-07-02-ucsb-spreadsheets I want to be able to learn new skill to apply in my current job
2024-07-02-ucsb-spreadsheets How to better use excell
2024-07-02-ucsb-spreadsheets managing, searching and analysising data
2024-07-02-ucsb-spreadsheets Being able to gather, manage, represent, analyze data to make decisions,
2024-07-02-ucsb-spreadsheets how to best organize data and learn new skills;

Learning environment in the workshop

Code
orderedq <- c("Strongly Disagree", "Somewhat Disagree", "Neither Agree or Disagree","Somewhat Agree", "Strongly Agree")
addNA(orderedq)
Code
agree_questions <- results %>% 
  select(join_key, agree_apply.post,    agree_comfortable.post, agree_clearanswers.post,
         agree_instr_enthusiasm.post, agree_instr_interaction.post, agree_instr_knowledge.post
) %>% 
  filter(!if_all(-join_key, is.na))

n_agree_questions <- nrow(agree_questions)
  
agree_questions <- agree_questions %>%
  pivot_longer(cols = -join_key, names_to = "Question", values_to = "Response") %>% 
  mutate(Response = factor(Response, levels = orderedq),
         Question = recode(Question,
                     "agree_apply.post" = "Can immediatly apply 
 what they learned",
                     "agree_comfortable.post" = "Comfortable learning in 
 the workshop environment",
                     "agree_clearanswers.post" = "Got clear answers 
 from instructors",
                     "agree_instr_enthusiasm.post" = "Instructors were enthusiastic",
                     "agree_instr_interaction.post" = "Comfortable interacting 
 with instructors",
                     "agree_instr_knowledge.post" = "Instructors were knowledgeable 
 about the material"
      ))

summary_data <- agree_questions %>%
  count(Question, Response, name = "count") %>% 
  mutate(percent = (count / n_agree_questions) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(summary_data, aes(x = Question, y = count, fill = Response)) +
  geom_col(position = "fill", color = "black", show.legend = TRUE) +
  scale_y_continuous(labels = scales::percent_format()) + 
  scale_fill_manual(values = c("Strongly Disagree" = "#d01c8b", 
                               "Somewhat Disagree" = "#f1b6da", 
                               "Neither Agree or Disagree" = "#f7f7f7", 
                               "Somewhat Agree" = "#b8e186", 
                               "Strongly Agree" = "#4dac26"), 
                    na.translate = TRUE, na.value = "#cccccc", 
                    breaks = orderedq, drop = FALSE) +
  geom_text(aes(label = text), size = 3,
             position = position_fill(vjust = 0.5)) +
  labs(y = "# respondents (Percentage)", x = element_blank(), fill = "Responses",
       subtitle = paste0("Number of responses: ", n_agree_questions)) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.subtitle = element_text(hjust = 0.5, size = 12))

How an instructor or helper affected your learning experience

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, instructor_example.post) %>%
  drop_na()
workshop instructor_example.post
2024-07-02-ucsb-spreadsheets Thank you Renata and Jose, I learned a lot! My only trouble was that I was using LibreOffice and some of the instructions did not apply so I was a bit lost. I don’t usually use LibreOffice so it shouldn’t be an issue when I’m back at my desk.
2024-07-02-ucsb-spreadsheets example of what
2024-07-02-ucsb-spreadsheets It is asking “Please provide an example of”, but it doesn’t say of what. If you were asking for an example of what I learned, my answer would be “How to better use the quality control tools in Excel to ensure my data is entered consistently.”
2024-07-02-ucsb-spreadsheets VERY useful the system of Blue Cards and Red Cards, because it helped learn while getting stuck on parts of the workshop training. Thank you!

Skills and perception comparison

Code
# Calculate mean scores and make graph for all respondents (only_matched=FALSE)
tryCatch(
  {
mean_nresp <- get_mean_scores_nresp(results, only_matched=FALSE)
graph_pre_post(mean_nresp$mean_scores, mean_nresp$n_resp_pre, mean_nresp$n_resp_post, mean_nresp$n_resp_pre_post, only_matched=FALSE)
},
error = function(cond) {
message("Could not do the plots as there are no pre or post results to show")
}
)

Code
# Calculate mean scores and make graph for only matched respondents in pre and post (only_matched=TRUE)
tryCatch(
  {
mean_nresp <- get_mean_scores_nresp(results, only_matched=TRUE)
graph_pre_post(mean_nresp$mean_scores, mean_nresp$n_resp_pre, mean_nresp$n_resp_post, mean_nresp$n_resp_pre_post, only_matched=TRUE)
},
error = function(cond) {
message("Could not do the plots as there are no pre or post results to show")
}
)

Workshop Strengths

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, workshop_strengths.post) %>% 
  drop_na()
workshop workshop_strengths.post
2024-07-02-ucsb-spreadsheets relevant material
2024-07-02-ucsb-spreadsheets Straightforward, has clear documentation of everything covered in class, simple and effective examples
2024-07-02-ucsb-spreadsheets I think the instructors were very knowledgeable
2024-07-02-ucsb-spreadsheets examples of untidy and tidy sheets
2024-07-02-ucsb-spreadsheets Everything! Thank you!
2024-07-02-ucsb-spreadsheets I liked that you didn’t assume prior knowledge on the part of the participants. The sample data was easy to understand and work with. The pace was good, but I would have liked more tips. Perhaps an advanced spreadsheet workshop?
2024-07-02-ucsb-spreadsheets The instructors were very knowledgeable. Having additional instructors to help out if you got stuck while working on the exercises was really great! It was engaging the whole time.
2024-07-02-ucsb-spreadsheets Instructors very helpful, had a good flow, and were very clear.
2024-07-02-ucsb-spreadsheets Awesome job using the microphone and ensuring the font size of the content shown on the main screen was enlarged. They’re accessibility basics, but they’re often forgotten.
2024-07-02-ucsb-spreadsheets The instructors made a daunting area of knowledge very accessible and showing practical applications.
2024-07-02-ucsb-spreadsheets making sure everyone was understanding and on the same page as the instructor;
2024-07-02-ucsb-spreadsheets The instructors were ready to help at every moment
2024-07-02-ucsb-spreadsheets in-person, hands-on. VERY, very helpful in the learning of this material.
2024-07-02-ucsb-spreadsheets pre workshop information helped everyone starting the workshop
2024-07-02-ucsb-spreadsheets I liked the exercises and the ability to ask questions in class at any time.

Ways to improve the workshop

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, workshop_improved.post) %>% 
  drop_na()
workshop workshop_improved.post
2024-07-02-ucsb-spreadsheets shorter, maybe?
2024-07-02-ucsb-spreadsheets more of the 2nd half (walking through commands & showing working in excel)
2024-07-02-ucsb-spreadsheets Maybe provide samples with students/staff to feel more related to us.
2024-07-02-ucsb-spreadsheets I would like a follow-up workshop that gives advanced tips for spreadsheets.
2024-07-02-ucsb-spreadsheets Very much looking forward to attending the following workshops on data and python. I feel like I didn’t exit the workshop with many hard skills, but rather a general improvement in background knowledge about data in spreadsheets (which is helpful, don’t get me wrong!) and that the coding workshops will help me to transition that new knowledge into practice.
2024-07-02-ucsb-spreadsheets clearly stating keyboard shortcuts they are using for people who dont know them
2024-07-02-ucsb-spreadsheets Preparing registrants to bring a laptop
2024-07-02-ucsb-spreadsheets Continue with the length of time. Please don’t shorten it.
2024-07-02-ucsb-spreadsheets not sure
2024-07-02-ucsb-spreadsheets I have an idea to bring this to the AMP group. brenda McGowen and I will be in touch about how to make this better suited for staff administrators.

How likely are you to recommend this workshop? Scale 0 - 10

Code
orderedq <- c("Detractor", "Passive", "Promoter")

nps <- results %>% 
  count(recommend_group.post, recommende_score.post, name = "count") %>% 
  drop_na() %>% 
  mutate(recommend_group.post = factor(recommend_group.post, levels = orderedq),
         percent = (count/sum(count)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

nps %>% 
ggplot(aes(x=recommende_score.post, y=count, fill=recommend_group.post)) +
  geom_col(color="black", show.legend = TRUE) +
  scale_fill_manual(values = c("Detractor" = "#af8dc3", "Passive" = "#f7f7f7", "Promoter" = "#7fbf7b"), breaks = c("Detractor", "Passive", "Promoter"), drop = FALSE) +
  geom_label(aes(label = text, vjust = -0.5), fill = "white", size= 3) +
  scale_x_continuous(breaks = 1:10) +
  labs(x = "NPS Score", y = "# respondents", subtitle = paste0("Number of responses: ", sum(nps$count), "
 Mean score: ", format(weighted.mean(nps$recommende_score.post, nps$count), digits = 3))) +
  theme_minimal() +
  theme(
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    plot.subtitle = element_text(hjust = 0.5, size = 12)
  ) +
  expand_limits(x = c(1,10),
                y = c(0, max(nps$count)*1.1))

Topic Suggestions

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, suggest_topics.post) %>% 
  drop_na()
workshop suggest_topics.post
2024-07-02-ucsb-spreadsheets Best ways to share data.
2024-07-02-ucsb-spreadsheets data transition across apps/languages (going from excel table to .csv then loading into R/MATLAB/Python)
2024-07-02-ucsb-spreadsheets Transfer data from Excel to word document.
2024-07-02-ucsb-spreadsheets Not sure
2024-07-02-ucsb-spreadsheets Learning more how to use pivot tables and create charts/graphs with data.
2024-07-02-ucsb-spreadsheets 1) Workshops aimed at support staff on campus, such as payroll staff or admin assistance. 2) Data organization and tools in Google Sheets.
2024-07-02-ucsb-spreadsheets Power using Excel
2024-07-02-ucsb-spreadsheets more advanced data storage
2024-07-02-ucsb-spreadsheets Using AI tools we currently have access to. I’d love a class on prompting. Or a class that helps AI work better for us.