This survey had only 13 responses. So it is just as easy to look through the responses from the raw csv file. Also, google forms itself summarizes the responses. The purpose of creating the summary using R is to learn to process the format in which google forms stores survey data using R.

The following chunk loads the survey data

# Load libraries
library(tidyverse)
library(gt)

# load survey data
surveydf = read_csv("IndyUseRSurvey.csv")
surveydf
## # A tibble: 13 x 15
##    Timestamp `What are you l… `What are some … `Would you like…
##    <chr>     <chr>            <chr>            <chr>           
##  1 2019/01/… Exposure to app… My busy schedule Indifferent     
##  2 2019/01/… Exposure to app… Location of Mee… Indifferent     
##  3 2019/01/… Build experienc… My busy schedul… Yes             
##  4 2019/01/… Exposure to app… Time of Meetup;… Indifferent     
##  5 2019/01/… Build experienc… Location of Mee… Yes             
##  6 2019/01/… Build experienc… Strict company … Yes             
##  7 2019/01/… Build experienc… My busy schedul… Indifferent     
##  8 2019/01/… Build experienc… No Barriers      Yes             
##  9 2019/01/… Exposure to app… Location of Mee… Yes             
## 10 2019/01/… Build experienc… Location of Mee… Yes             
## 11 2019/01/… Build experienc… Location of Mee… Yes             
## 12 2019/01/… Build experienc… My busy schedul… Yes             
## 13 2019/01/… Build experienc… My busy schedul… Yes             
## # ... with 11 more variables: `List your preference for type of
## #   Topics` <chr>, `List any specific topics that you want to see covered
## #   in the meetup` <chr>, `Would a day of R training on a Saturday
## #   covering basics of data manipulation, plotting etc. be of
## #   interest?` <chr>, `If interested in a day of R training, what is the
## #   maximum fee that should be charged?` <chr>, `List your preferred days
## #   for meetup` <chr>, `List your preferred locations for meetup in
## #   Indianapolis (north side, downtown etc.)` <chr>, `Would you like to
## #   present in the meetup?` <chr>, `If you would like to present, list
## #   topic or topics that you would be interested in presenting` <chr>,
## #   `What is your R experience level?` <chr>, `List R packages that you
## #   commonly use` <chr>, `List any other feedback that is not captured
## #   above` <chr>

This format is not convenient to work with. Each respondents answers are across the row. Also, multiple responses to a single question appear in the same field separated by semicolon. Next, I convert the data to a tall format since that is easier to work with.I used the list-column and unnest feature to separate multiple responses to a single question into individual rows.

# gather all questions/answers in tall format
surveydf = surveydf %>% select(-Timestamp) %>% mutate(id = seq(1, nrow(surveydf)))
# split responses where more than one response is given to a question
surveydf_g = surveydf %>% gather(question, answer, -id)
surveydf_g = surveydf_g %>% mutate(anssplit = strsplit(answer,";")) %>% unnest(anssplit)
surveydf_g = surveydf_g %>% mutate(anssplit = str_wrap(anssplit, 30))

# question list
questions = surveydf_g %>% distinct(question)
questions = questions$question

surveydf_g
## # A tibble: 236 x 4
##       id question           answer                    anssplit            
##    <int> <chr>              <chr>                     <chr>               
##  1     1 What are you look… Exposure to application … "Exposure to applic…
##  2     2 What are you look… Exposure to application … "Exposure to applic…
##  3     2 What are you look… Exposure to application … Networking          
##  4     3 What are you look… Build experience/experti… "Build experience/e…
##  5     3 What are you look… Build experience/experti… "Exposure to applic…
##  6     3 What are you look… Build experience/experti… Networking          
##  7     4 What are you look… Exposure to application … "Exposure to applic…
##  8     5 What are you look… Build experience/experti… "Build experience/e…
##  9     5 What are you look… Build experience/experti… Networking          
## 10     6 What are you look… Build experience/experti… "Build experience/e…
## # ... with 226 more rows
# function to get bar plot for multiple choice questions
getbarplot = function(quest) {
  p = ggplot(surveydf_g %>% filter(question == quest) %>% count(anssplit)) + 
    geom_col(aes(x = fct_reorder(anssplit, n), y = n), width = 0.5, fill = "lightblue") + 
    xlab("") + ylab("# responses") + 
    coord_flip() + theme_bw() + ggtitle(str_wrap(quest))
  return(p)
}

Next, we get the counts of choices for the multiple choice questions

barplotq = c(1, 2, 3, 4, 6, 7, 8, 10, 12)
for(i in barplotq) {
  p = getbarplot(questions[i])
  print(p)
}

Next, we list the reponses to open ended questions and use the awesome new gt package to format it nicely

openrespq = surveydf_g %>% filter(question %in% questions[c(5, 9, 11, 13, 14)]) %>% 
              filter(!is.na(anssplit)) %>% select(question, anssplit) %>% 
              rename(response = anssplit)
openrespq %>% mutate(dummy = "         ") %>% gt(rowname_col = "dummy", groupname_col = "question")
response
List any specific topics that you want to see covered in the meetup
Embedded html -r applications
Integration with SQL and non- SQL DBs. Integration with Tableau and JMP
Anything manufacturing and quality related
Risk analysis using R (insurance), geospatial, R in cloud
introduction to tidy verse
R server and R markdown
List your preferred locations for meetup in Indianapolis (north side, downtown etc.)
North side
South
Downtown
Downtown, north side (in order of preference)
Downtown
downtown
northside
North
North side, free parking
Northside is ok if accessable. Other ok if not a traffic tough area.
north side, but not a strong preference
Downtown, Broad Ripple
no preference (I likely am too far and won't attend in person)
If you would like to present, list topic or topics that you would be interested in presenting
Not sure right now. I presented a couple of years ago but now I'm working mainly in JMP and Tableau
Geospatial analysis using R
demographic data with maps, etc.
List R packages that you commonly use
None
ggplot2, dplyr, etc. The usual Tidy Verse stuff. Also, highly dependent on the specific analysis.
tidyverse packages, ggplot2
raster, sf, sp, rgdal, mapview, data.table, ggplot2
drake, txtq, dplyr, tibble, reprex, clustermq, future, batchtools, TSDT
ggplot1, dplyr
Markdown, forecast, shiny, tidyverse
tidy, acs-r,etc.
Shiny, machine learning.
List any other feedback that is not captured above
All is well!!!!
The lack of networking coupled with the long drive are why I haven't been attending. Also, a couple of the presentation were so bad that I wouldn't drive around the block for them.
I only go to meetups if a topic is posted. Never 'TBD'.
I haven't used r in over a year, and never attended a meeting, so the online option will be a plus.
I am more than an hour from Indy, so some of my answers reflect that. I hope the option to join remotely is popular. That would be great. Thank you!

Session Info

sessionInfo()
## R version 3.3.1 (2016-06-21)
## Platform: x86_64-apple-darwin13.4.0 (64-bit)
## Running under: OS X 10.13.6 (unknown)
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] bindrcpp_0.2.2  gt_0.1.0        forcats_0.3.0   stringr_1.3.1  
##  [5] dplyr_0.7.8     purrr_0.2.4     readr_1.1.1     tidyr_0.8.2    
##  [9] tibble_1.4.2    ggplot2_3.1.0   tidyverse_1.2.1
## 
## loaded via a namespace (and not attached):
##  [1] tidyselect_0.2.5 reshape2_1.4.1   haven_1.1.0      lattice_0.20-33 
##  [5] colorspace_1.2-6 htmltools_0.3.6  yaml_2.1.16      utf8_1.1.3      
##  [9] rlang_0.3.0.1    pillar_1.3.0     foreign_0.8-66   glue_1.3.0      
## [13] withr_2.1.2      modelr_0.1.2     readxl_1.0.0     bindr_0.1.1     
## [17] plyr_1.8.4       commonmark_1.7   munsell_0.5.0    gtable_0.2.0    
## [21] cellranger_1.1.0 rvest_0.3.2      psych_1.7.8      evaluate_0.10.1 
## [25] labeling_0.3     knitr_1.19       parallel_3.3.1   fansi_0.4.0     
## [29] broom_0.4.2      Rcpp_1.0.0       checkmate_1.8.5  backports_1.1.2 
## [33] scales_1.0.0     jsonlite_1.5     mnormt_1.5-5     hms_0.4.2       
## [37] digest_0.6.13    stringi_1.2.4    grid_3.3.1       rprojroot_1.3-2 
## [41] cli_1.0.1        tools_3.3.1      sass_0.1.0.9000  magrittr_1.5    
## [45] lazyeval_0.2.0   crayon_1.3.4     pkgconfig_2.0.1  xml2_1.1.1      
## [49] lubridate_1.7.1  assertthat_0.2.0 rmarkdown_1.8    httr_1.3.1      
## [53] rstudioapi_0.7   R6_2.2.2         nlme_3.1-128