When I worked for the New York City Department of Education’s Office of School Support Services (NYC DOE OSSS), where my work was primarily focused upon school food research and program evaluation, we believed that students need to eat well to learn well. In this capacity, I was the program evaluator for the Garden To Café project (GTC).
This project was led by a chef1. GTC’s chefs obtain fresh, seasonal food (raw ingredients) from local farms and the schools’ own gardens, prepare the available ingredients into one or more dishes, and then have the students at participating schools try those dishes at special tasting events, often during lunch.
The chefs always had a pretty good sense of how students were responding to the dishes. The GTC coordinator also wanted formal feedback on the dishes. Over a period of four to five years, he and I worked together to develop on-site taste testing methodology that would efficiently deliver quality feedback to the program. We also wanted to make sure the schools benefited from the time they gave us for the taste testing.
This report delivers analysis of the last such taste test I conducted at NYC DOE schools.
I felt I had an obligation to my colleagues at the Garden To Café program, to the staff and students at the school at which the taste test was held, to the field of school food research and to the taxpayers of New York City to complete the work. The final project for Intro to R felt like an ideal opportunity to bring the work to completion, while simultaneously expanding my analysis skills.
Another primary motivation for this report and analysis is rooted some two decades earlier.
I am enrolled in the Teachers College Learning Analytics Masters program, but this is not my first tour as a graduate student. I completed my first graduate program by earning a Ph.D. in Education at Cornell University, studying with Dr. Joseph Novak.
The Education program at Cornell was very good in many ways. One way it fell short of the mark, in retrospect, was insufficient emphasis on quantitative analysis. I don’t think people at the time anticipated how quantitative the field of educational research would become. The Cornell Education Department didn’t have any education statistics courses; Education graduate students had to go to Biology or Industrial and Labor Relations. No one pushed me to take statistics courses as a substantial portion of my studies. It is what it was.
I have acquired a lot of quantitative analysis skills in the field, which has taken me far, including becoming a disciple of effect size, but not far enough.
I have tried to supplement my skills on the fly for specialized needs, but nothing was working well. When the pandemic came and everything slowed down, I decided to try going back for a full degree program. I consider myself to be a very applied researcher. Learning Analytics seemed to be the most applied of Teachers College’s analysis-focused programs. Pages of code that runs without error later, so far so good.
Each analysis and report in R requires various packages to run. These packages need to be installed and loaded before the analysis using those packages starts.
This next section presumes all of the needed packages are already installed, but provides the install.packages()
code commented out so they are easily accessible if they are not already installed. Then the packages are loaded using the library()
function.
# Install Packages
# DO NOT RUN this section, unless these packages have not been installed yet!!
# install.packages("readxl")
# install.packages('epiDisplay')
# install.packages("gmodels") # for CrossTable()
# install.packages("xtable")
# install.packages("ggthemes")
# Load Packages
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.5 ✓ dplyr 1.0.7
## ✓ tidyr 1.1.4 ✓ stringr 1.4.0
## ✓ readr 2.0.2 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(readxl)
library(ggplot2)
library(epiDisplay)
## Loading required package: foreign
## Loading required package: survival
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
## Loading required package: nnet
##
## Attaching package: 'epiDisplay'
## The following object is masked from 'package:ggplot2':
##
## alpha
library(dplyr)
library(tidyr)
library(knitr)
library(gmodels) # for CrossTable()
##
## Attaching package: 'gmodels'
## The following object is masked from 'package:epiDisplay':
##
## ci
library(xtable)
library(ggthemes) # for fancy ggplot plots
library(gridExtra) # to combine ggplots
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
On May 14, 2019, I conducted a taste test at a public elementary school in NYC for the Garden To Café project (GTC). For various reasons, the data from this taste test has not been analysed until now.
This report of the May 14, 2019 Garden To Café taste test replicates, more or less, the report “Pilot test of a Garden To Café scannable taste test survey for snack fruit administered in classrooms at PSABX on 12/14/2017” dated 12/21/20173.
Additional analysis was done following the model of “Supplemental results from a Garden To Café scannable taste test survey for snack fruit administered in classrooms at PSABX on 12/14/2017” dated 2/14/20184. None of this analysis is an exact replication of these reports since the surveys used and dishes served were somewhat different.
Also note that this report was written in part to explore and demonstrate techniques in R, so it contains more plots than might otherwise have been included in a more typical report written for a client. Also since this report is written to demonstrate facility in R and R Markdown, it displays the code interspersed with the text. This makes the report less efficiently useful for other audiences, such as the client or executives. As such, one likely next step later on would be to produce a version of the report with less or no code displayed. To do this, I would likely experiment with putting echo = FALSE
and warning = FALSE
into the {r ...}
of some or all code chunks in the R Markdown file5.
One of the Garden To Café chefs prepared a salad with arugula, spinach and sliced carrots. The salad was lightly dressed with an apple-based dressing. Three photos of the salad are shown below: with flash, without flash and as served in sample cups plus that day’s school food lunch (hamburger, fries, onion rings and a pear or apple). The last photo also shows the ingredient handouts that were available to the teacher and students who wished to take a set.