├── .gitignore ├── 00-welcome ├── 00-welcome.pdf └── packages.R ├── 01-md-compose-prose ├── 01-md-compose-prose.pdf ├── analyze-share-repro.Rmd └── analyze-share-repro.html ├── 02-rmarkdown-structure-analysis ├── 02-rmarkdown-structure-analysis.pdf ├── sd-burritos.Rmd ├── sd-burritos.html └── sd-burritos.md ├── 03-up-your-rmd-game ├── 03-up-your-rmd-game.pdf ├── bibliography.bib ├── sd-burritos-bibcit.Rmd ├── sd-burritos-bibcit.html ├── sd-burritos-parametrized.Rmd ├── sd-burritos-parametrized.html ├── sd-burritos-tables.Rmd └── sd-burritos-tables.html ├── 04-shiny-getting-started ├── 04-shiny-getting-started.pdf └── apps │ ├── goog-index │ ├── DESCRIPTION │ ├── README.md │ ├── app.R │ └── data │ │ ├── trend_data.csv │ │ └── trend_description.csv │ └── movies │ ├── movies.Rdata │ ├── movies_01.R │ ├── movies_02.R │ ├── movies_03.R │ ├── movies_04.R │ └── movies_05.R ├── 05-understand-reactivity ├── 05-understand-reactivity.pdf └── apps │ └── movies │ ├── movies.Rdata │ ├── movies_05.R │ ├── movies_06.R │ ├── movies_07.R │ ├── movies_08.R │ ├── movies_09.R │ ├── movies_10.R │ └── movies_11.R ├── 06-design-ui ├── 06-design-ui.pdf └── apps │ └── movies │ ├── movies.Rdata │ └── movies_11.R ├── 07-dashboards ├── 07-dashboards.pdf └── apps │ └── dashboard │ ├── flexdashboard_01.Rmd │ ├── flexdashboard_01.html │ ├── flexdashboard_02.Rmd │ └── movies.Rdata ├── 08-more-react ├── 08-more-react.pdf ├── movies.Rdata ├── movies_11.R ├── movies_12.R ├── movies_13.R └── movies_14.R ├── 09-wrap-up └── 09-wrap-up.pdf ├── Icon ├── README.md ├── cond └── app.R ├── data └── burritos_01022018.csv └── rstudioconf-2018-intro-shiny-rmarkdown.Rproj /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | .DS_Store 6 | *.key 7 | /timer-videos/ 8 | *soln.Rmd 9 | *soln.html 10 | *soln-sg.Rmd 11 | *soln-sg.html 12 | *soln.bib 13 | *soln/ 14 | .dropbox 15 | Icon 16 | /old-folders/ 17 | -------------------------------------------------------------------------------- /00-welcome/00-welcome.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/00-welcome/00-welcome.pdf -------------------------------------------------------------------------------- /00-welcome/packages.R: -------------------------------------------------------------------------------- 1 | # Install packages that will be used in the workshop 2 | from_cran <- c("shiny", "rmarkdown", 3 | "DT", "devtools", "flexdashboard", "gapminder", 4 | "rticles", "shinydashboard", "shinythemes", 5 | "tidyverse", "tufte", "xaringan") 6 | 7 | install.packages(from_cran, repos = "http://cran.rstudio.com") 8 | 9 | # Load packages 10 | 11 | library(shiny) 12 | library(rmarkdown) 13 | library(DT) 14 | library(devtools) 15 | library(flexdashboard) 16 | library(gapminder) 17 | library(rticles) 18 | library(shinydashboard) 19 | library(shinythemes) 20 | library(tidyverse) 21 | library(tufte) 22 | library(xaringan) 23 | -------------------------------------------------------------------------------- /01-md-compose-prose/01-md-compose-prose.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/01-md-compose-prose/01-md-compose-prose.pdf -------------------------------------------------------------------------------- /01-md-compose-prose/analyze-share-repro.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: html_document 3 | --- 4 | 5 | Analyze. Share. Reproduce. and do it all with R Markdown. Your data tells a story. Tell it with R Markdown. Turn your analyses into high quality documents, reports, presentations and dashboards - and don't forget to drink some H20 while you do that. R Markdown documents are fully reproducible. Use a productive notebook interface to weave together narrative text and code to produce elegantly formatted output. Use multiple languages including R, Python, and SQL. Do you need still need convincing to use R Markdown? See what a friend once said: I used to use Sweave, and get terrible headaches. Now I use R Markdown, and life is much more pleasant. Or coffee, whatever floats your boat. This link should point to http://rmarkdown.rstudio.com/r_notebooks.html. -------------------------------------------------------------------------------- /02-rmarkdown-structure-analysis/02-rmarkdown-structure-analysis.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/02-rmarkdown-structure-analysis/02-rmarkdown-structure-analysis.pdf -------------------------------------------------------------------------------- /02-rmarkdown-structure-analysis/sd-burritos.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "San Diego Burritos" 3 | author: "Mine Çetinkaya-Rundel" 4 | date: "`r Sys.Date()`" 5 | output: 6 | html_document: 7 | highlight: pygments 8 | theme: cosmo 9 | --- 10 | 11 | ```{r load-packages} 12 | library(tidyverse) 13 | ``` 14 | 15 | # The data 16 | 17 | ## Kaggle: SD Burritos 18 | 19 | The data come from [Kaggle.com](https://www.kaggle.com/srcole/burritos-in-san-diego): 20 | 21 | >Mexican cuisine is often the best food option is southern California. And the 22 | >burrito is the hallmark of delicious taco shop food: tasty, cheap, and filling. 23 | >Appropriately, an effort was launched to critique burritos across the county 24 | >and make this data open to the lay burrito consumer. 25 | 26 | ```{r load-data} 27 | burritos <- read_csv("../data/burritos_01022018.csv") 28 | ``` 29 | 30 | ## About the data 31 | 32 | At this time, the data set contains ratings from over `r nrow(burritos)` 33 | burritos fromd `r burritos %>% count(Location) %>% nrow()` restaurants. 34 | 35 | There are 10 core dimensions of the San Diego burrito: 36 | 37 | 1. Volume 38 | 1. Tortilla quality 39 | 1. Temperature 40 | 1. Meat quality 41 | 1. Non-meat filling quality 42 | 1. Meat-to-filling ratio 43 | 1. Uniformity 44 | 1. Salsa quality 45 | 1. Flavor synergy 46 | 1. Wrap integrity 47 | 48 | All of these measures (except for Volume) are rated on a scale from 0 to 5, 0 49 | being terrible, and 5 being optimal. Other information available for each 50 | burrito includes an overall rating, cost, Yelp rating of the restaurant, and more. 51 | 52 | ## Glimpse at the data 53 | 54 | ```{r} 55 | glimpse(burritos) 56 | ``` 57 | 58 | # Exploratory data analysis 59 | 60 | ## Reviewer counts 61 | 62 | First let's take a look at who the reviewers are: 63 | 64 | ```{r} 65 | burritos_rev_count <- burritos %>% 66 | mutate(Reviewer = fct_lump(Reviewer, n = 5)) %>% 67 | count(Reviewer) %>% 68 | mutate(Reviewer = fct_reorder(Reviewer, n, .desc = TRUE)) %>% 69 | arrange(desc(n)) 70 | burritos_rev_count 71 | ggplot(data = burritos_rev_count, mapping = aes(x = Reviewer, y = n)) + 72 | geom_bar(stat = "identity") + 73 | labs(title = "Distribution of reviewers", x = "", y = "") 74 | ``` 75 | 76 | Seems like `r burritos_rev_count$Reviewer[1]` has been eating a lot of burritos! 77 | 78 | ## Overall rating vs. cost 79 | 80 | Next we visualize the relationship between the cost and overall rating of the 81 | burritos. The relationship appears to be positive, though the one extremely 82 | expensive burrito makes it difficult to assess the strength of the relationship. 83 | 84 | ```{r} 85 | ggplot(data = burritos, mapping = aes(x = Cost, y = overall)) + 86 | geom_point() + 87 | labs(title = "Overall rating vs. cost", y = "Overall rating") 88 | ``` 89 | -------------------------------------------------------------------------------- /02-rmarkdown-structure-analysis/sd-burritos.md: -------------------------------------------------------------------------------- 1 | San Diego Burritos 2 | ================ 3 | Mine Çetinkaya-Rundel 4 | 2018-01-31 5 | 6 | The data 7 | ======== 8 | 9 | Kaggle: SD Burritos 10 | ------------------- 11 | 12 | The data come from [Kaggle.com](https://www.kaggle.com/srcole/burritos-in-san-diego): 13 | 14 | > Mexican cuisine is often the best food option is southern California. And the burrito is the hallmark of delicious taco shop food: tasty, cheap, and filling. Appropriately, an effort was launched to critique burritos across the county and make this data open to the lay burrito consumer. 15 | 16 | ``` r 17 | burritos <- read_csv("../data/burritos_01022018.csv") 18 | ``` 19 | 20 | ## Warning: Duplicated column names deduplicated: 'Salsa' => 'Salsa_1' [50] 21 | 22 | ## Parsed with column specification: 23 | ## cols( 24 | ## .default = col_character(), 25 | ## Yelp = col_double(), 26 | ## Google = col_double(), 27 | ## Cost = col_double(), 28 | ## Hunger = col_double(), 29 | ## `Mass (g)` = col_integer(), 30 | ## `Density (g/mL)` = col_double(), 31 | ## Length = col_double(), 32 | ## Circum = col_double(), 33 | ## Volume = col_double(), 34 | ## Tortilla = col_double(), 35 | ## Temp = col_double(), 36 | ## Meat = col_double(), 37 | ## Fillings = col_double(), 38 | ## `Meat:filling` = col_double(), 39 | ## Uniformity = col_double(), 40 | ## Salsa = col_double(), 41 | ## Synergy = col_double(), 42 | ## Wrap = col_double(), 43 | ## overall = col_double() 44 | ## ) 45 | 46 | ## See spec(...) for full column specifications. 47 | 48 | About the data 49 | -------------- 50 | 51 | At this time, the data set contains ratings from over 385 burritos fromd 102 restaurants. 52 | 53 | There are 10 core dimensions of the San Diego burrito: 54 | 55 | 1. Volume 56 | 2. Tortilla quality 57 | 3. Temperature 58 | 4. Meat quality 59 | 5. Non-meat filling quality 60 | 6. Meat-to-filling ratio 61 | 7. Uniformity 62 | 8. Salsa quality 63 | 9. Flavor synergy 64 | 10. Wrap integrity 65 | 66 | All of these measures (except for Volume) are rated on a scale from 0 to 5, 0 being terrible, and 5 being optimal. Other information available for each burrito includes an overall rating, cost, Yelp rating of the restaurant, and more. 67 | 68 | Glimpse at the data 69 | ------------------- 70 | 71 | Exploratory data analysis 72 | ========================= 73 | 74 | Reviewer counts 75 | --------------- 76 | 77 | First let's take a look at who the reviewers are: 78 | 79 | ``` r 80 | burritos_rev_count <- burritos %>% 81 | mutate(Reviewer = fct_lump(Reviewer, n = 5)) %>% 82 | count(Reviewer) %>% 83 | mutate(Reviewer = fct_reorder(Reviewer, n, .desc = TRUE)) %>% 84 | arrange(desc(n)) 85 | burritos_rev_count 86 | ``` 87 | 88 | ## # A tibble: 8 x 2 89 | ## Reviewer n 90 | ## 91 | ## 1 Scott 139 92 | ## 2 Other 135 93 | ## 3 Emily 58 94 | ## 4 Ricardo 17 95 | ## 5 Sage 15 96 | ## 6 Luis 10 97 | ## 7 Richard 10 98 | ## 8 1 99 | 100 | ``` r 101 | ggplot(data = burritos_rev_count, mapping = aes(x = Reviewer, y = n)) + 102 | geom_bar(stat = "identity") + 103 | labs(title = "Distribution of reviewers", x = "", y = "") 104 | ``` 105 | 106 | ![](sd-burritos_files/figure-markdown_github/unnamed-chunk-2-1.png) 107 | 108 | Seems like Scott has been eating a lot of burritos! 109 | 110 | Overall rating vs. cost 111 | ----------------------- 112 | 113 | Next we visualize the relationship between the cost and overall rating of the burritos. The relationship appears to be positive, though the one extremely expensive burrito makes it difficult to assess the strength of the relationship. 114 | 115 | ## Warning: Removed 9 rows containing missing values (geom_point). 116 | 117 | ![](sd-burritos_files/figure-markdown_github/unnamed-chunk-3-1.png) 118 | -------------------------------------------------------------------------------- /03-up-your-rmd-game/03-up-your-rmd-game.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/03-up-your-rmd-game/03-up-your-rmd-game.pdf -------------------------------------------------------------------------------- /03-up-your-rmd-game/bibliography.bib: -------------------------------------------------------------------------------- 1 | @article{Kaggle18, 2 | title={Burritos in San Diego}, 3 | author={Cole, Scott}, 4 | year={2018}, 5 | URL={https://www.kaggle.com/srcole/burritos-in-san-diego'} 6 | } -------------------------------------------------------------------------------- /03-up-your-rmd-game/sd-burritos-bibcit.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "San Diego Burritos - Bibliography and citation" 3 | author: "Mine Çetinkaya-Rundel" 4 | date: "`r Sys.Date()`" 5 | output: 6 | html_document: 7 | highlight: pygments 8 | theme: cosmo 9 | references: 10 | - id: Kaggle18 11 | title: Burritos in San Diego 12 | author: 13 | - family: Cole 14 | given: Scott 15 | URL: 'https://www.kaggle.com/srcole/burritos-in-san-diego' 16 | type: article 17 | issued: 18 | year: 2018 19 | month: 1 20 | --- 21 | 22 | 23 | 24 | The data come from @Kaggle18. 25 | 26 | ## References 27 | -------------------------------------------------------------------------------- /03-up-your-rmd-game/sd-burritos-parametrized.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "San Diego Burritos - Parametrized" 3 | author: "Mine Çetinkaya-Rundel" 4 | date: "`r Sys.Date()`" 5 | output: 6 | html_document: 7 | highlight: pygments 8 | theme: cosmo 9 | params: 10 | Reviewer: 11 | label: "Reviewer:" 12 | value: Scott 13 | input: select 14 | choices: [Scott, Emily, Ricardo, Sage, Luis, Richard] 15 | --- 16 | 17 | ```{r load-packages, message=FALSE} 18 | library(tidyverse) 19 | ``` 20 | 21 | ## Kaggle: SD Burritos 22 | 23 | The data come from [Kaggle.com](https://www.kaggle.com/srcole/burritos-in-san-diego). In this analysis we focus on burritos reviewed by `r params$Reviewer` only. 24 | 25 | ```{r load-filter-data, message=FALSE, warning=FALSE} 26 | burritos <- read_csv("../data/burritos_01022018.csv") %>% 27 | filter(Reviewer == params$Reviewer) 28 | ``` 29 | 30 | The data set contains `r nrow(burritos)` burritos reviewed by `r params$Reviewer` 31 | from `r burritos %>% count(Location) %>% nrow()` restaurants. 32 | 33 | The scatterplot below displays the relationship between the cost and overall 34 | rating of the burritos for burritos reviewed by `r params$Reviewer`. 35 | 36 | ```{r rating-cost-scatter, warning=FALSE} 37 | ggplot(data = burritos, mapping = aes(x = Cost, y = overall)) + 38 | geom_point() + 39 | labs(title = "Overall rating vs. cost", y = "Overall rating") 40 | ``` 41 | -------------------------------------------------------------------------------- /03-up-your-rmd-game/sd-burritos-tables.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "San Diego Burritos - Tables" 3 | author: "Mine Çetinkaya-Rundel" 4 | date: "`r Sys.Date()`" 5 | output: 6 | html_document: 7 | highlight: pygments 8 | theme: cosmo 9 | --- 10 | 11 | ```{r load-packages, message=FALSE} 12 | library(tidyverse) 13 | ``` 14 | 15 | The data come from [Kaggle.com](https://www.kaggle.com/srcole/burritos-in-san-diego). 16 | 17 | ```{r load-data, message=FALSE, warning=FALSE} 18 | burritos <- read_csv("../data/burritos_01022018.csv") 19 | ``` 20 | 21 | Let's clean up the `Burrito` variable first: 22 | 23 | ```{r clean-burrito} 24 | burritos <- burritos %>% 25 | mutate(Burrito = fct_lump(Burrito, n = 9)) 26 | ``` 27 | 28 | Below is some standard table output: 29 | 30 | ```{r} 31 | burritos %>% 32 | count(Burrito) %>% 33 | arrange(desc(n)) 34 | ``` 35 | 36 | And the same output with `kable`: 37 | 38 | ```{r} 39 | burritos %>% 40 | count(Burrito) %>% 41 | arrange(desc(n)) %>% 42 | knitr::kable() 43 | ``` 44 | 45 | Another useful package is `DT`, especially for displaying tables of with large number of rows: 46 | 47 | ```{r} 48 | burritos %>% 49 | DT::datatable() 50 | ``` 51 | 52 | Other packages -------------------------------------------------------------------------------- /04-shiny-getting-started/04-shiny-getting-started.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/04-shiny-getting-started/04-shiny-getting-started.pdf -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/goog-index/DESCRIPTION: -------------------------------------------------------------------------------- 1 | Type: Shiny 2 | Title: Google Trend Index 3 | License: MIT 4 | Author: Mine Cetinkaya-Rundel 5 | AuthorUrl: http://www.rstudio.com/ 6 | Tags: getting-started 7 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/goog-index/README.md: -------------------------------------------------------------------------------- 1 | A simple Shiny app that displays data for the Google Trend Index app. Featured on the front page of the [Shiny Dev Center](http://shiny.rstudio.com). 2 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/goog-index/app.R: -------------------------------------------------------------------------------- 1 | # Load packages ----------------------------------------------------- 2 | library(shiny) 3 | library(shinythemes) 4 | library(dplyr) 5 | library(readr) 6 | 7 | # Load data --------------------------------------------------------- 8 | trend_data <- read_csv("data/trend_data.csv") 9 | trend_description <- read_csv("data/trend_description.csv") 10 | 11 | # Define UI --------------------------------------------------------- 12 | ui <- fluidPage(theme = shinytheme("lumen"), 13 | titlePanel("Google Trend Index"), 14 | sidebarLayout( 15 | sidebarPanel( 16 | 17 | # Select type of trend to plot 18 | selectInput(inputId = "type", label = strong("Trend index"), 19 | choices = unique(trend_data$type), 20 | selected = "Travel"), 21 | 22 | # Select date range to be plotted 23 | dateRangeInput("date", strong("Date range"), 24 | start = "2007-01-01", end = "2017-07-31", 25 | min = "2007-01-01", max = "2017-07-31"), 26 | 27 | # Select whether to overlay smooth trend line 28 | checkboxInput(inputId = "smoother", 29 | label = strong("Overlay smooth trend line"), 30 | value = FALSE), 31 | 32 | # Display only if the smoother is checked 33 | conditionalPanel(condition = "input.smoother == true", 34 | sliderInput(inputId = "f", label = "Smoother span:", 35 | min = 0.01, max = 1, value = 0.67, step = 0.01, 36 | animate = animationOptions(interval = 100)), 37 | HTML("Higher values give more smoothness.") 38 | ) 39 | ), 40 | 41 | # Output: Description, lineplot, and reference 42 | mainPanel( 43 | plotOutput(outputId = "lineplot", height = "300px"), 44 | textOutput(outputId = "desc"), 45 | tags$a(href = "https://www.google.com/finance/domestic_trends", "Source: Google Domestic Trends", target = "_blank") 46 | ) 47 | ) 48 | ) 49 | 50 | # Define server function -------------------------------------------- 51 | server <- function(input, output) { 52 | 53 | # Subset data 54 | selected_trends <- reactive({ 55 | req(input$date) 56 | validate(need(!is.na(input$date[1]) & !is.na(input$date[2]), "Error: Please provide both a start and an end date.")) 57 | validate(need(input$date[1] < input$date[2], "Error: Start date should be earlier than end date.")) 58 | trend_data %>% 59 | filter( 60 | type == input$type, 61 | date > as.POSIXct(input$date[1]) & date < as.POSIXct(input$date[2] 62 | )) 63 | }) 64 | 65 | 66 | # Create scatterplot object the plotOutput function is expecting 67 | output$lineplot <- renderPlot({ 68 | color = "#434343" 69 | par(mar = c(4, 4, 1, 1)) 70 | plot(x = selected_trends()$date, y = selected_trends()$close, type = "l", 71 | xlab = "Date", ylab = "Trend index", col = color, fg = color, col.lab = color, col.axis = color) 72 | # Display only if smoother is checked 73 | if(input$smoother){ 74 | smooth_curve <- lowess(x = as.numeric(selected_trends()$date), y = selected_trends()$close, f = input$f) 75 | lines(smooth_curve, col = "#E6553A", lwd = 3) 76 | } 77 | }) 78 | 79 | # Pull in description of trend 80 | output$desc <- renderText({ 81 | trend_text <- filter(trend_description, type == input$type) %>% pull(text) 82 | paste(trend_text, "The index is set to 1.0 on January 1, 2004 and is calculated only for US search traffic.") 83 | }) 84 | } 85 | 86 | # Create the Shiny app object --------------------------------------- 87 | shinyApp(ui = ui, server = server) 88 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/goog-index/data/trend_description.csv: -------------------------------------------------------------------------------- 1 | type,text 2 | Advertising & marketing,"The Google Advertising & Marketing Index tracks queries related to marketing, advertising, ads, adsense, constant contact, public relations, etc." 3 | Education,"The Google Education Index tracks queries related to college, education, test, academy, barnes and noble, harvard, etc." 4 | Small business,"The Google Small Business Index tracks queries related to small business, make money, franchise, work from home, chamber or commerce, etc." 5 | Travel,"The Google Travel Index tracks queries related to airlines, hotels, beach, southwest, las vegas, flights, etc." 6 | Unemployment,"The Google Unemployment Index tracks queries related to unemployment, food stamps, social security, edd, disability, etc." 7 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/movies/movies.Rdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/04-shiny-getting-started/apps/movies/movies.Rdata -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/movies/movies_01.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(tidyverse) 3 | load("movies.Rdata") 4 | 5 | # Define UI for application that plots features of movies ----------- 6 | ui <- fluidPage( 7 | 8 | # Sidebar layout with a input and output definitions -------------- 9 | sidebarLayout( 10 | 11 | # Inputs: Select variables to plot ------------------------------ 12 | sidebarPanel( 13 | 14 | # Select variable for y-axis ---------------------------------- 15 | selectInput(inputId = "y", 16 | label = "Y-axis:", 17 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 18 | selected = "audience_score"), 19 | 20 | # Select variable for x-axis ---------------------------------- 21 | selectInput(inputId = "x", 22 | label = "X-axis:", 23 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 24 | selected = "critics_score") 25 | ), 26 | 27 | # Output: Show scatterplot -------------------------------------- 28 | mainPanel( 29 | plotOutput(outputId = "scatterplot") 30 | ) 31 | ) 32 | ) 33 | 34 | # Define server function required to create the scatterplot --------- 35 | server <- function(input, output) { 36 | 37 | # Create scatterplot object the plotOutput function is expecting -- 38 | output$scatterplot <- renderPlot({ 39 | ggplot(data = movies, aes_string(x = input$x, y = input$y)) + 40 | geom_point() 41 | }) 42 | } 43 | 44 | # Create the Shiny app object --------------------------------------- 45 | shinyApp(ui = ui, server = server) 46 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/movies/movies_02.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(tidyverse) 3 | load("movies.Rdata") 4 | 5 | # Define UI for application that plots features of movies ----------- 6 | ui <- fluidPage( 7 | 8 | # Sidebar layout with a input and output definitions -------------- 9 | sidebarLayout( 10 | 11 | # Inputs: Select variables to plot ------------------------------ 12 | sidebarPanel( 13 | 14 | # Select variable for y-axis ---------------------------------- 15 | selectInput(inputId = "y", 16 | label = "Y-axis:", 17 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 18 | selected = "audience_score"), 19 | 20 | # Select variable for x-axis ---------------------------------- 21 | selectInput(inputId = "x", 22 | label = "X-axis:", 23 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 24 | selected = "critics_score"), 25 | 26 | # Select variable for color ----------------------------------- 27 | selectInput(inputId = "z", 28 | label = "Color by:", 29 | choices = c("title_type", "genre", "mpaa_rating", "critics_rating", "audience_rating"), 30 | selected = "mpaa_rating") 31 | ), 32 | 33 | # Output: Show scatterplot -------------------------------------- 34 | mainPanel( 35 | plotOutput(outputId = "scatterplot") 36 | ) 37 | ) 38 | ) 39 | 40 | # Define server function required to create the scatterplot --------- 41 | server <- function(input, output) { 42 | 43 | # Create scatterplot object the plotOutput function is expecting -- 44 | output$scatterplot <- renderPlot({ 45 | ggplot(data = movies, aes_string(x = input$x, y = input$y, 46 | color = input$z)) + 47 | geom_point() 48 | }) 49 | } 50 | 51 | # Create the Shiny app object --------------------------------------- 52 | shinyApp(ui = ui, server = server) 53 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/movies/movies_03.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(tidyverse) 3 | load("movies.Rdata") 4 | 5 | # Define UI for application that plots features of movies ----------- 6 | ui <- fluidPage( 7 | 8 | # Sidebar layout with a input and output definitions -------------- 9 | sidebarLayout( 10 | 11 | # Inputs: Select variables to plot ------------------------------ 12 | sidebarPanel( 13 | 14 | # Select variable for y-axis ---------------------------------- 15 | selectInput(inputId = "y", 16 | label = "Y-axis:", 17 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 18 | selected = "audience_score"), 19 | 20 | # Select variable for x-axis ---------------------------------- 21 | selectInput(inputId = "x", 22 | label = "X-axis:", 23 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 24 | selected = "critics_score"), 25 | 26 | # Select variable for color ----------------------------------- 27 | selectInput(inputId = "z", 28 | label = "Color by:", 29 | choices = c("title_type", "genre", "mpaa_rating", "critics_rating", "audience_rating"), 30 | selected = "mpaa_rating"), 31 | 32 | # Set alpha level --------------------------------------------- 33 | sliderInput(inputId = "alpha", 34 | label = "Alpha:", 35 | min = 0, max = 1, 36 | value = 0.5) 37 | ), 38 | 39 | # Output: Show scatterplot -------------------------------------- 40 | mainPanel( 41 | plotOutput(outputId = "scatterplot") 42 | ) 43 | ) 44 | ) 45 | 46 | # Define server function required to create the scatterplot --------- 47 | server <- function(input, output) { 48 | 49 | # Create scatterplot object the plotOutput function is expecting -- 50 | output$scatterplot <- renderPlot({ 51 | ggplot(data = movies, aes_string(x = input$x, y = input$y, 52 | color = input$z)) + 53 | geom_point(alpha = input$alpha) 54 | }) 55 | } 56 | 57 | # Create the Shiny app object --------------------------------------- 58 | shinyApp(ui = ui, server = server) 59 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/movies/movies_04.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(tidyverse) 3 | load("movies.Rdata") 4 | 5 | # Define UI for application that plots features of movies ----------- 6 | ui <- fluidPage( 7 | 8 | # Sidebar layout with a input and output definitions -------------- 9 | sidebarLayout( 10 | 11 | # Inputs: Select variables to plot ------------------------------ 12 | sidebarPanel( 13 | 14 | # Select variable for y-axis ---------------------------------- 15 | selectInput(inputId = "y", 16 | label = "Y-axis:", 17 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 18 | selected = "audience_score"), 19 | 20 | # Select variable for x-axis ---------------------------------- 21 | selectInput(inputId = "x", 22 | label = "X-axis:", 23 | choices = c("imdb_rating", "imdb_num_votes", "critics_score", "audience_score", "runtime"), 24 | selected = "critics_score"), 25 | 26 | # Select variable for color ----------------------------------- 27 | selectInput(inputId = "z", 28 | label = "Color by:", 29 | choices = c("title_type", "genre", "mpaa_rating", "critics_rating", "audience_rating"), 30 | selected = "mpaa_rating"), 31 | 32 | # Set alpha level --------------------------------------------- 33 | sliderInput(inputId = "alpha", 34 | label = "Alpha:", 35 | min = 0, max = 1, 36 | value = 0.5), 37 | 38 | # Add checkbox 39 | checkboxInput(inputId = "showdata", 40 | label = "Show data table", 41 | value = TRUE) 42 | ), 43 | 44 | # Output: -------------------------------------------------------- 45 | mainPanel( 46 | plotOutput(outputId = "scatterplot"), 47 | DT::dataTableOutput(outputId = "moviestable") 48 | ) 49 | ) 50 | ) 51 | 52 | # Define server function required to create the scatterplot --------- 53 | server <- function(input, output) { 54 | 55 | # Create scatterplot object the plotOutput function is expecting -- 56 | output$scatterplot <- renderPlot({ 57 | ggplot(data = movies, aes_string(x = input$x, y = input$y, 58 | color = input$z)) + 59 | geom_point(alpha = input$alpha) 60 | }) 61 | 62 | # Print data table if checked ------------------------------------- 63 | output$moviestable <- DT::renderDataTable({ 64 | DT::datatable(data = movies[, 1:7], 65 | options = list(pageLength = 10, rownames = FALSE) 66 | ) 67 | }) 68 | 69 | } 70 | 71 | # Run the application ----------------------------------------------- 72 | shinyApp(ui = ui, server = server) 73 | 74 | -------------------------------------------------------------------------------- /04-shiny-getting-started/apps/movies/movies_05.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(tidyverse) 3 | library(DT) 4 | library(stringr) 5 | library(tools) 6 | load("movies.Rdata") 7 | 8 | # Define UI for application that plots features of movies ----------- 9 | ui <- fluidPage( 10 | 11 | # Application title ----------------------------------------------- 12 | titlePanel("Movie browser"), 13 | 14 | # Sidebar layout with a input and output definitions -------------- 15 | sidebarLayout( 16 | 17 | # Inputs: Select variables to plot ------------------------------ 18 | sidebarPanel( 19 | 20 | # Select variable for y-axis ---------------------------------- 21 | selectInput(inputId = "y", 22 | label = "Y-axis:", 23 | choices = c("IMDB rating" = "imdb_rating", 24 | "IMDB number of votes" = "imdb_num_votes", 25 | "Critics Score" = "critics_score", 26 | "Audience Score" = "audience_score", 27 | "Runtime" = "runtime"), 28 | selected = "audience_score"), 29 | 30 | # Select variable for x-axis ---------------------------------- 31 | selectInput(inputId = "x", 32 | label = "X-axis:", 33 | choices = c("IMDB rating" = "imdb_rating", 34 | "IMDB number of votes" = "imdb_num_votes", 35 | "Critics Score" = "critics_score", 36 | "Audience Score" = "audience_score", 37 | "Runtime" = "runtime"), 38 | selected = "critics_score"), 39 | 40 | # Select variable for color ----------------------------------- 41 | selectInput(inputId = "z", 42 | label = "Color by:", 43 | choices = c("Title Type" = "title_type", 44 | "Genre" = "genre", 45 | "MPAA Rating" = "mpaa_rating", 46 | "Critics Rating" = "critics_rating", 47 | "Audience Rating" = "audience_rating"), 48 | selected = "mpaa_rating"), 49 | 50 | # Set alpha level --------------------------------------------- 51 | sliderInput(inputId = "alpha", 52 | label = "Alpha:", 53 | min = 0, max = 1, 54 | value = 0.5) 55 | 56 | ), 57 | 58 | # Output -------------------------------------------------------- 59 | mainPanel( 60 | 61 | # Show scatterplot -------------------------------------------- 62 | plotOutput(outputId = "scatterplot"), 63 | 64 | # Show data table --------------------------------------------- 65 | DT::dataTableOutput(outputId = "moviestable") 66 | ) 67 | ) 68 | ) 69 | 70 | # Define server function required to create the scatterplot --------- 71 | server <- function(input, output) { 72 | 73 | # Create scatterplot object the plotOutput function is expecting -- 74 | output$scatterplot <- renderPlot({ 75 | ggplot(data = movies, aes_string(x = input$x, y = input$y, 76 | color = input$z)) + 77 | geom_point(alpha = input$alpha) + 78 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 79 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 80 | color = toTitleCase(str_replace_all(input$z, "_", " "))) 81 | }) 82 | 83 | # Print data table if checked ------------------------------------- 84 | output$moviestable <- DT::renderDataTable({ 85 | DT::datatable(data = movies[, 1:7], 86 | options = list(pageLength = 10), 87 | rownames = FALSE) 88 | }) 89 | } 90 | 91 | # Create the Shiny app object --------------------------------------- 92 | shinyApp(ui = ui, server = server) 93 | -------------------------------------------------------------------------------- /05-understand-reactivity/05-understand-reactivity.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/05-understand-reactivity/05-understand-reactivity.pdf -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies.Rdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/05-understand-reactivity/apps/movies/movies.Rdata -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies_05.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(tools) 6 | load("movies.Rdata") 7 | 8 | # Define UI for application that plots features of movies ----------- 9 | ui <- fluidPage( 10 | 11 | # Application title ----------------------------------------------- 12 | titlePanel("Movie browser"), 13 | 14 | # Sidebar layout with a input and output definitions -------------- 15 | sidebarLayout( 16 | 17 | # Inputs: Select variables to plot ------------------------------ 18 | sidebarPanel( 19 | 20 | # Select variable for y-axis ---------------------------------- 21 | selectInput(inputId = "y", 22 | label = "Y-axis:", 23 | choices = c("IMDB rating" = "imdb_rating", 24 | "IMDB number of votes" = "imdb_num_votes", 25 | "Critics Score" = "critics_score", 26 | "Audience Score" = "audience_score", 27 | "Runtime" = "runtime"), 28 | selected = "audience_score"), 29 | 30 | # Select variable for x-axis ---------------------------------- 31 | selectInput(inputId = "x", 32 | label = "X-axis:", 33 | choices = c("IMDB rating" = "imdb_rating", 34 | "IMDB number of votes" = "imdb_num_votes", 35 | "Critics Score" = "critics_score", 36 | "Audience Score" = "audience_score", 37 | "Runtime" = "runtime"), 38 | selected = "critics_score"), 39 | 40 | # Select variable for color ----------------------------------- 41 | selectInput(inputId = "z", 42 | label = "Color by:", 43 | choices = c("Title Type" = "title_type", 44 | "Genre" = "genre", 45 | "MPAA Rating" = "mpaa_rating", 46 | "Critics Rating" = "critics_rating", 47 | "Audience Rating" = "audience_rating"), 48 | selected = "mpaa_rating"), 49 | 50 | # Set alpha level --------------------------------------------- 51 | sliderInput(inputId = "alpha", 52 | label = "Alpha:", 53 | min = 0, max = 1, 54 | value = 0.5) 55 | 56 | ), 57 | 58 | # Output -------------------------------------------------------- 59 | mainPanel( 60 | 61 | # Show scatterplot -------------------------------------------- 62 | plotOutput(outputId = "scatterplot"), 63 | 64 | # Show data table --------------------------------------------- 65 | DT::dataTableOutput(outputId = "moviestable") 66 | ) 67 | ) 68 | ) 69 | 70 | # Define server function required to create the scatterplot --------- 71 | server <- function(input, output) { 72 | 73 | # Create scatterplot object the plotOutput function is expecting -- 74 | output$scatterplot <- renderPlot({ 75 | ggplot(data = movies, aes_string(x = input$x, y = input$y, 76 | color = input$z)) + 77 | geom_point(alpha = input$alpha) + 78 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 79 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 80 | color = toTitleCase(str_replace_all(input$z, "_", " "))) 81 | }) 82 | 83 | # Print data table if checked ------------------------------------- 84 | output$moviestable <- DT::renderDataTable({ 85 | DT::datatable(data = movies[, 1:7], 86 | options = list(pageLength = 10), 87 | rownames = FALSE) 88 | }) 89 | } 90 | 91 | # Create the Shiny app object --------------------------------------- 92 | shinyApp(ui = ui, server = server) 93 | -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies_06.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | load("movies.Rdata") 6 | 7 | # Define UI for application that plots features of movies ----------- 8 | ui <- fluidPage( 9 | 10 | # Application title ----------------------------------------------- 11 | titlePanel("Movie browser"), 12 | 13 | # Sidebar layout with a input and output definitions -------------- 14 | sidebarLayout( 15 | 16 | # Inputs: Select variables to plot ------------------------------ 17 | sidebarPanel( 18 | 19 | # Select variable for y-axis ---------------------------------- 20 | selectInput(inputId = "y", 21 | label = "Y-axis:", 22 | choices = c("IMDB rating" = "imdb_rating", 23 | "IMDB number of votes" = "imdb_num_votes", 24 | "Critics Score" = "critics_score", 25 | "Audience Score" = "audience_score", 26 | "Runtime" = "runtime"), 27 | selected = "audience_score"), 28 | 29 | # Select variable for x-axis ---------------------------------- 30 | selectInput(inputId = "x", 31 | label = "X-axis:", 32 | choices = c("IMDB rating" = "imdb_rating", 33 | "IMDB number of votes" = "imdb_num_votes", 34 | "Critics Score" = "critics_score", 35 | "Audience Score" = "audience_score", 36 | "Runtime" = "runtime"), 37 | selected = "critics_score"), 38 | 39 | # Select variable for color ----------------------------------- 40 | selectInput(inputId = "z", 41 | label = "Color by:", 42 | choices = c("Title Type" = "title_type", 43 | "Genre" = "genre", 44 | "MPAA Rating" = "mpaa_rating", 45 | "Critics Rating" = "critics_rating", 46 | "Audience Rating" = "audience_rating"), 47 | selected = "mpaa_rating"), 48 | 49 | # Set alpha level --------------------------------------------- 50 | sliderInput(inputId = "alpha", 51 | label = "Alpha:", 52 | min = 0, max = 1, 53 | value = 0.5), 54 | 55 | # Set point size ---------------------------------------------- 56 | sliderInput(inputId = "size", 57 | label = "Size:", 58 | min = 0, max = 5, 59 | value = 2) 60 | 61 | ), 62 | 63 | # Output -------------------------------------------------------- 64 | mainPanel( 65 | 66 | # Show scatterplot -------------------------------------------- 67 | plotOutput(outputId = "scatterplot"), 68 | 69 | # Show data table --------------------------------------------- 70 | DT::dataTableOutput(outputId = "moviestable") 71 | ) 72 | ) 73 | ) 74 | 75 | # Define server function required to create the scatterplot --------- 76 | server <- function(input, output) { 77 | 78 | # Create scatterplot object the plotOutput function is expecting -- 79 | output$scatterplot <- renderPlot({ 80 | ggplot(data = movies, aes_string(x = input$x, y = input$y, 81 | color = input$z)) + 82 | geom_point(alpha = input$alpha, size = input$size) + 83 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 84 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 85 | color = toTitleCase(str_replace_all(input$z, "_", " "))) 86 | }) 87 | 88 | # Print data table if checked ------------------------------------- 89 | output$moviestable <- DT::renderDataTable({ 90 | DT::datatable(data = movies[, 1:7], 91 | options = list(pageLength = 10), 92 | rownames = FALSE) 93 | }) 94 | } 95 | 96 | # Create the Shiny app object --------------------------------------- 97 | shinyApp(ui = ui, server = server) 98 | -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies_07.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Horizontal line for visual separation ----------------------- 64 | hr(), 65 | 66 | # Select which types of movies to plot ------------------------ 67 | checkboxGroupInput(inputId = "selected_type", 68 | label = "Select movie type(s):", 69 | choices = c("Documentary", "Feature Film", "TV Movie"), 70 | selected = "Feature Film") 71 | ), 72 | 73 | # Output: ------------------------------------------------------- 74 | mainPanel( 75 | 76 | # Show scatterplot -------------------------------------------- 77 | plotOutput(outputId = "scatterplot"), 78 | br(), # a little bit of visual separation 79 | 80 | # Print number of obs plotted --------------------------------- 81 | uiOutput(outputId = "n"), 82 | br(), br(), # a little bit of visual separation 83 | 84 | # Show data table --------------------------------------------- 85 | DT::dataTableOutput(outputId = "moviestable") 86 | ) 87 | ) 88 | ) 89 | 90 | # Define server function required to create the scatterplot --------- 91 | server <- function(input, output) { 92 | 93 | # Create a subset of data filtering for selected title types ------ 94 | movies_subset <- reactive({ 95 | req(input$selected_type) # ensure availablity of value before proceeding 96 | filter(movies, title_type %in% input$selected_type) 97 | }) 98 | 99 | # Create scatterplot object the plotOutput function is expecting -- 100 | output$scatterplot <- renderPlot({ 101 | ggplot(data = movies_subset(), aes_string(x = input$x, y = input$y, 102 | color = input$z)) + 103 | geom_point(alpha = input$alpha, size = input$size) + 104 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 105 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 106 | color = toTitleCase(str_replace_all(input$z, "_", " "))) 107 | }) 108 | 109 | # Print number of movies plotted ---------------------------------- 110 | output$n <- renderUI({ 111 | types <- movies_subset()$title_type %>% 112 | factor(levels = input$selected_type) 113 | counts <- table(types) 114 | 115 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 116 | }) 117 | 118 | # Print data table if checked ------------------------------------- 119 | output$moviestable <- DT::renderDataTable({ 120 | DT::datatable(data = movies[, 1:7], 121 | options = list(pageLength = 10), 122 | rownames = FALSE) 123 | }) 124 | } 125 | 126 | # Create the Shiny app object --------------------------------------- 127 | shinyApp(ui = ui, server = server) 128 | -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies_08.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Horizontal line for visual separation ----------------------- 64 | hr(), 65 | 66 | # Select which types of movies to plot ------------------------ 67 | checkboxGroupInput(inputId = "selected_type", 68 | label = "Select movie type(s):", 69 | choices = c("Documentary", "Feature Film", "TV Movie"), 70 | selected = "Feature Film") 71 | ), 72 | 73 | # Output: ------------------------------------------------------- 74 | mainPanel( 75 | 76 | # Show scatterplot -------------------------------------------- 77 | plotOutput(outputId = "scatterplot"), 78 | br(), # a little bit of visual separation 79 | 80 | # Print number of obs plotted --------------------------------- 81 | uiOutput(outputId = "n"), 82 | br(), br(), # a little bit of visual separation 83 | 84 | # Show data table --------------------------------------------- 85 | DT::dataTableOutput(outputId = "moviestable") 86 | ) 87 | ) 88 | ) 89 | 90 | # Define server function required to create the scatterplot --------- 91 | server <- function(input, output) { 92 | 93 | # Create a subset of data filtering for selected title types ------ 94 | movies_subset <- reactive({ 95 | req(input$selected_type) # ensure availablity of value before proceeding 96 | filter(movies, title_type %in% input$selected_type) 97 | }) 98 | 99 | # Create scatterplot object the plotOutput function is expecting -- 100 | output$scatterplot <- renderPlot({ 101 | ggplot(data = movies_subset(), aes_string(x = input$x, y = input$y, 102 | color = input$z)) + 103 | geom_point(alpha = input$alpha, size = input$size) + 104 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 105 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 106 | color = toTitleCase(str_replace_all(input$z, "_", " "))) 107 | }) 108 | 109 | # Print number of movies plotted ---------------------------------- 110 | output$n <- renderUI({ 111 | types <- movies_subset()$title_type %>% 112 | factor(levels = input$selected_type) 113 | counts <- table(types) 114 | 115 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 116 | }) 117 | 118 | # Print data table if checked ------------------------------------- 119 | output$moviestable <- DT::renderDataTable({ 120 | DT::datatable(data = movies_subset()[, 1:7], 121 | options = list(pageLength = 10), 122 | rownames = FALSE) 123 | }) 124 | } 125 | 126 | # Create the Shiny app object --------------------------------------- 127 | shinyApp(ui = ui, server = server) 128 | -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies_09.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Horizontal line for visual separation ----------------------- 64 | hr(), 65 | 66 | # Select which types of movies to plot ------------------------ 67 | checkboxGroupInput(inputId = "selected_type", 68 | label = "Select movie type(s):", 69 | choices = c("Documentary", "Feature Film", "TV Movie"), 70 | selected = "Feature Film"), 71 | 72 | # Select sample size ---------------------------------------------------- 73 | numericInput(inputId = "n_samp", 74 | label = "Sample size:", 75 | min = 1, max = nrow(movies), 76 | value = 50) 77 | ), 78 | 79 | # Output: ------------------------------------------------------- 80 | mainPanel( 81 | 82 | # Show scatterplot -------------------------------------------- 83 | plotOutput(outputId = "scatterplot"), 84 | br(), # a little bit of visual separation 85 | 86 | # Print number of obs plotted --------------------------------- 87 | uiOutput(outputId = "n"), 88 | br(), br(), # a little bit of visual separation 89 | 90 | # Show data table --------------------------------------------- 91 | DT::dataTableOutput(outputId = "moviestable") 92 | ) 93 | ) 94 | ) 95 | 96 | # Define server function required to create the scatterplot --------- 97 | server <- function(input, output) { 98 | 99 | # Create a subset of data filtering for selected title types ------ 100 | movies_subset <- reactive({ 101 | req(input$selected_type) # ensure availablity of value before proceeding 102 | filter(movies, title_type %in% input$selected_type) 103 | }) 104 | 105 | # Create new df that is n_samp obs from selected type movies ------ 106 | movies_sample <- reactive({ 107 | req(input$n_samp) # ensure availablity of value before proceeding 108 | sample_n(movies_subset(), input$n_samp) 109 | }) 110 | 111 | # Create scatterplot object the plotOutput function is expecting -- 112 | output$scatterplot <- renderPlot({ 113 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, color = input$z)) + 114 | geom_point(alpha = input$alpha, size = input$size) + 115 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 116 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 117 | color = toTitleCase(str_replace_all(input$z, "_", " "))) 118 | }) 119 | 120 | # Print number of movies plotted ---------------------------------- 121 | output$n <- renderUI({ 122 | types <- movies_sample()$title_type %>% 123 | factor(levels = input$selected_type) 124 | counts <- table(types) 125 | 126 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 127 | }) 128 | 129 | # Print data table if checked ------------------------------------- 130 | output$moviestable <- DT::renderDataTable({ 131 | DT::datatable(data = movies_sample()[, 1:7], 132 | options = list(pageLength = 10), 133 | rownames = FALSE) 134 | }) 135 | } 136 | 137 | # Create the Shiny app object --------------------------------------- 138 | shinyApp(ui = ui, server = server) 139 | -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies_10.R: -------------------------------------------------------------------------------- 1 | # Note: This app is intentionally broken, 2 | # it is used as part of an exercise 3 | 4 | library(shiny) 5 | library(ggplot2) 6 | library(DT) 7 | library(stringr) 8 | library(dplyr) 9 | library(tools) 10 | load("movies.Rdata") 11 | 12 | # Define UI for application that plots features of movies ----------- 13 | ui <- fluidPage( 14 | 15 | # Application title ----------------------------------------------- 16 | titlePanel("Movie browser"), 17 | 18 | # Sidebar layout with a input and output definitions -------------- 19 | sidebarLayout( 20 | 21 | # Inputs: Select variables to plot ------------------------------ 22 | sidebarPanel( 23 | 24 | # Select variable for y-axis ---------------------------------- 25 | selectInput(inputId = "y", 26 | label = "Y-axis:", 27 | choices = c("IMDB rating" = "imdb_rating", 28 | "IMDB number of votes" = "imdb_num_votes", 29 | "Critics Score" = "critics_score", 30 | "Audience Score" = "audience_score", 31 | "Runtime" = "runtime"), 32 | selected = "audience_score"), 33 | 34 | # Select variable for x-axis ---------------------------------- 35 | selectInput(inputId = "x", 36 | label = "X-axis:", 37 | choices = c("IMDB rating" = "imdb_rating", 38 | "IMDB number of votes" = "imdb_num_votes", 39 | "Critics Score" = "critics_score", 40 | "Audience Score" = "audience_score", 41 | "Runtime" = "runtime"), 42 | selected = "critics_score"), 43 | 44 | # Select variable for color ----------------------------------- 45 | selectInput(inputId = "z", 46 | label = "Color by:", 47 | choices = c("Title Type" = "title_type", 48 | "Genre" = "genre", 49 | "MPAA Rating" = "mpaa_rating", 50 | "Critics Rating" = "critics_rating", 51 | "Audience Rating" = "audience_rating"), 52 | selected = "mpaa_rating"), 53 | 54 | # Set alpha level --------------------------------------------- 55 | sliderInput(inputId = "alpha", 56 | label = "Alpha:", 57 | min = 0, max = 1, 58 | value = 0.5), 59 | 60 | # Set point size ---------------------------------------------- 61 | sliderInput(inputId = "size", 62 | label = "Size:", 63 | min = 0, max = 5, 64 | value = 2), 65 | 66 | # Enter text for plot title --------------------------------------------- 67 | textInput(inputId = "plot_title", 68 | label = "Plot title", 69 | placeholder = "Enter text to be used as plot title"), 70 | 71 | # Horizontal line for visual separation ----------------------- 72 | hr(), 73 | 74 | # Select which types of movies to plot ------------------------ 75 | checkboxGroupInput(inputId = "selected_type", 76 | label = "Select movie type(s):", 77 | choices = c("Documentary", "Feature Film", "TV Movie"), 78 | selected = "Feature Film"), 79 | 80 | # Select sample size ---------------------------------------------------- 81 | numericInput(inputId = "n_samp", 82 | label = "Sample size:", 83 | min = 1, max = nrow(movies), 84 | value = 50) 85 | ), 86 | 87 | # Output: ------------------------------------------------------- 88 | mainPanel( 89 | 90 | # Show scatterplot -------------------------------------------- 91 | plotOutput(outputId = "scatterplot"), 92 | br(), # a little bit of visual separation 93 | 94 | # Print number of obs plotted --------------------------------- 95 | uiOutput(outputId = "n"), 96 | br(), br(), # a little bit of visual separation 97 | 98 | # Show data table --------------------------------------------- 99 | DT::dataTableOutput(outputId = "moviestable") 100 | ) 101 | ) 102 | ) 103 | 104 | # Define server function required to create the scatterplot --------- 105 | server <- function(input, output) { 106 | 107 | # Create a subset of data filtering for selected title types ------ 108 | movies_subset <- reactive({ 109 | req(input$selected_type) # ensure availablity of value before proceeding 110 | filter(movies, title_type %in% input$selected_type) 111 | }) 112 | 113 | # Create new df that is n_samp obs from selected type movies ------ 114 | movies_sample <- reactive({ 115 | req(input$n_samp) # ensure availablity of value before proceeding 116 | sample_n(movies_subset(), input$n_samp) 117 | }) 118 | 119 | # Convert plot_title toTitleCase ---------------------------------- 120 | output$pretty_plot_title <- toTitleCase(input$plot_title) 121 | 122 | # Create scatterplot object the plotOutput function is expecting -- 123 | output$scatterplot <- renderPlot({ 124 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, 125 | color = input$z)) + 126 | geom_point(alpha = input$alpha, size = input$size) + 127 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 128 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 129 | color = toTitleCase(str_replace_all(input$z, "_", " ")), 130 | title = output$pretty_plot_title 131 | ) 132 | }) 133 | 134 | # Print number of movies plotted ---------------------------------- 135 | output$n <- renderUI({ 136 | types <- movies_sample()$title_type %>% 137 | factor(levels = input$selected_type) 138 | counts <- table(types) 139 | 140 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 141 | }) 142 | 143 | # Print data table if checked ------------------------------------- 144 | output$moviestable <- DT::renderDataTable({ 145 | DT::datatable(data = movies_sample()[, 1:7], 146 | options = list(pageLength = 10), 147 | rownames = FALSE) 148 | }) 149 | } 150 | 151 | # Create the Shiny app object --------------------------------------- 152 | shinyApp(ui = ui, server = server) 153 | -------------------------------------------------------------------------------- /05-understand-reactivity/apps/movies/movies_11.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Enter text for plot title --------------------------------------------- 64 | textInput(inputId = "plot_title", 65 | label = "Plot title", 66 | placeholder = "Enter text to be used as plot title"), 67 | 68 | # Horizontal line for visual separation ----------------------- 69 | hr(), 70 | 71 | # Select which types of movies to plot ------------------------ 72 | checkboxGroupInput(inputId = "selected_type", 73 | label = "Select movie type(s):", 74 | choices = c("Documentary", "Feature Film", "TV Movie"), 75 | selected = "Feature Film"), 76 | 77 | # Select sample size ---------------------------------------------------- 78 | numericInput(inputId = "n_samp", 79 | label = "Sample size:", 80 | min = 1, max = nrow(movies), 81 | value = 50) 82 | ), 83 | 84 | # Output: ------------------------------------------------------- 85 | mainPanel( 86 | 87 | # Show scatterplot -------------------------------------------- 88 | plotOutput(outputId = "scatterplot"), 89 | br(), # a little bit of visual separation 90 | 91 | # Print number of obs plotted --------------------------------- 92 | uiOutput(outputId = "n"), 93 | br(), br(), # a little bit of visual separation 94 | 95 | # Show data table --------------------------------------------- 96 | DT::dataTableOutput(outputId = "moviestable") 97 | ) 98 | ) 99 | ) 100 | 101 | # Define server function required to create the scatterplot --------- 102 | server <- function(input, output) { 103 | 104 | # Create a subset of data filtering for selected title types ------ 105 | movies_subset <- reactive({ 106 | req(input$selected_type) # ensure availablity of value before proceeding 107 | filter(movies, title_type %in% input$selected_type) 108 | }) 109 | 110 | # Create new df that is n_samp obs from selected type movies ------ 111 | movies_sample <- reactive({ 112 | req(input$n_samp) # ensure availablity of value before proceeding 113 | sample_n(movies_subset(), input$n_samp) 114 | }) 115 | 116 | # Convert plot_title toTitleCase ---------------------------------- 117 | pretty_plot_title <- reactive({ toTitleCase(input$plot_title) }) 118 | 119 | # Create scatterplot object the plotOutput function is expecting -- 120 | output$scatterplot <- renderPlot({ 121 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, 122 | color = input$z)) + 123 | geom_point(alpha = input$alpha, size = input$size) + 124 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 125 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 126 | color = toTitleCase(str_replace_all(input$z, "_", " ")), 127 | title = pretty_plot_title() 128 | ) 129 | }) 130 | 131 | # Print number of movies plotted ---------------------------------- 132 | output$n <- renderUI({ 133 | types <- movies_sample()$title_type %>% 134 | factor(levels = input$selected_type) 135 | counts <- table(types) 136 | 137 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 138 | }) 139 | 140 | # Print data table if checked ------------------------------------- 141 | output$moviestable <- DT::renderDataTable({ 142 | DT::datatable(data = movies_sample()[, 1:7], 143 | options = list(pageLength = 10), 144 | rownames = FALSE) 145 | }) 146 | } 147 | 148 | # Run the application ----------------------------------------------- 149 | shinyApp(ui = ui, server = server) 150 | -------------------------------------------------------------------------------- /06-design-ui/06-design-ui.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/06-design-ui/06-design-ui.pdf -------------------------------------------------------------------------------- /06-design-ui/apps/movies/movies.Rdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/06-design-ui/apps/movies/movies.Rdata -------------------------------------------------------------------------------- /06-design-ui/apps/movies/movies_11.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Enter text for plot title --------------------------------------------- 64 | textInput(inputId = "plot_title", 65 | label = "Plot title", 66 | placeholder = "Enter text to be used as plot title"), 67 | 68 | # Horizontal line for visual separation ----------------------- 69 | hr(), 70 | 71 | # Select which types of movies to plot ------------------------ 72 | checkboxGroupInput(inputId = "selected_type", 73 | label = "Select movie type(s):", 74 | choices = c("Documentary", "Feature Film", "TV Movie"), 75 | selected = "Feature Film"), 76 | 77 | # Select sample size ---------------------------------------------------- 78 | numericInput(inputId = "n_samp", 79 | label = "Sample size:", 80 | min = 1, max = nrow(movies), 81 | value = 50) 82 | ), 83 | 84 | # Output: ------------------------------------------------------- 85 | mainPanel( 86 | 87 | # Show scatterplot -------------------------------------------- 88 | plotOutput(outputId = "scatterplot"), 89 | br(), # a little bit of visual separation 90 | 91 | # Print number of obs plotted --------------------------------- 92 | uiOutput(outputId = "n"), 93 | br(), br(), # a little bit of visual separation 94 | 95 | # Show data table --------------------------------------------- 96 | DT::dataTableOutput(outputId = "moviestable") 97 | ) 98 | ) 99 | ) 100 | 101 | # Define server function required to create the scatterplot --------- 102 | server <- function(input, output) { 103 | 104 | # Create a subset of data filtering for selected title types ------ 105 | movies_subset <- reactive({ 106 | req(input$selected_type) # ensure availablity of value before proceeding 107 | filter(movies, title_type %in% input$selected_type) 108 | }) 109 | 110 | # Create new df that is n_samp obs from selected type movies ------ 111 | movies_sample <- reactive({ 112 | req(input$n_samp) # ensure availablity of value before proceeding 113 | sample_n(movies_subset(), input$n_samp) 114 | }) 115 | 116 | # Convert plot_title toTitleCase ---------------------------------- 117 | pretty_plot_title <- reactive({ toTitleCase(input$plot_title) }) 118 | 119 | # Create scatterplot object the plotOutput function is expecting -- 120 | output$scatterplot <- renderPlot({ 121 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, 122 | color = input$z)) + 123 | geom_point(alpha = input$alpha, size = input$size) + 124 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 125 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 126 | color = toTitleCase(str_replace_all(input$z, "_", " ")), 127 | title = pretty_plot_title() 128 | ) 129 | }) 130 | 131 | # Print number of movies plotted ---------------------------------- 132 | output$n <- renderUI({ 133 | types <- movies_sample()$title_type %>% 134 | factor(levels = input$selected_type) 135 | counts <- table(types) 136 | 137 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 138 | }) 139 | 140 | # Print data table if checked ------------------------------------- 141 | output$moviestable <- DT::renderDataTable({ 142 | DT::datatable(data = movies_sample()[, 1:7], 143 | options = list(pageLength = 10), 144 | rownames = FALSE) 145 | }) 146 | } 147 | 148 | # Run the application ----------------------------------------------- 149 | shinyApp(ui = ui, server = server) 150 | -------------------------------------------------------------------------------- /07-dashboards/07-dashboards.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/07-dashboards/07-dashboards.pdf -------------------------------------------------------------------------------- /07-dashboards/apps/dashboard/flexdashboard_01.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "flexdashboard + shiny" 3 | output: 4 | flexdashboard::flex_dashboard: 5 | orientation: columns 6 | vertical_layout: fill 7 | runtime: shiny 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | library(flexdashboard) 12 | library(tidyverse) 13 | ``` 14 | 15 | Column {data-width=650} 16 | ----------------------------------------------------------------------- 17 | 18 | ### Scatterplot of weight and miles per gallon 19 | 20 | ```{r} 21 | mpg_subset <- reactive({ 22 | mtcars %>% 23 | filter( 24 | hp >= input$hp[1], 25 | hp <= input$hp[2], 26 | cyl %in% input$cyl 27 | ) 28 | }) 29 | 30 | renderPlot({ 31 | ggplot(mpg_subset(), aes(x = wt, y = mpg, color = factor(cyl))) + 32 | geom_point() 33 | }) 34 | ``` 35 | 36 | Column {data-width=350} 37 | ----------------------------------------------------------------------- 38 | 39 | ### Inputs 40 | 41 | ```{r} 42 | checkboxGroupInput("cyl", "Cylinders", choices = c("4", "6", "8"), 43 | selected = c("4", "6", "8"), inline = TRUE 44 | ) 45 | 46 | sliderInput("hp", "Horsepower", 47 | min = min(mtcars$hp), max = max(mtcars$hp), 48 | value = range(mtcars$hp) 49 | ) 50 | ``` 51 | 52 | ### Histogram of weight 53 | 54 | ```{r} 55 | renderPlot({ 56 | 57 | ggplot(mpg_subset(), aes(x = wt)) + 58 | geom_histogram(binwidth = 0.25) 59 | 60 | }) 61 | ``` 62 | -------------------------------------------------------------------------------- /07-dashboards/apps/dashboard/flexdashboard_02.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "flexdashboard + shiny" 3 | output: 4 | flexdashboard::flex_dashboard: 5 | orientation: columns 6 | vertical_layout: fill 7 | runtime: shiny 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | library(flexdashboard) 12 | library(tidyverse) 13 | ``` 14 | 15 | Column {data-width=650} 16 | ----------------------------------------------------------------------- 17 | 18 | ### Scatterplot of weight and miles per gallon 19 | 20 | ```{r} 21 | mpg_subset <- reactive({ 22 | mtcars %>% 23 | filter( 24 | hp >= input$hp[1], 25 | hp <= input$hp[2], 26 | cyl %in% input$cyl 27 | ) 28 | }) 29 | 30 | renderPlot({ 31 | ggplot(mpg_subset(), aes(x = wt, y = mpg, color = factor(cyl))) + 32 | geom_point() 33 | }) 34 | ``` 35 | 36 | Column {data-width=350} 37 | ----------------------------------------------------------------------- 38 | 39 | ### Inputs 40 | 41 | ```{r} 42 | checkboxGroupInput("cyl", "Cylinders", choices = c("4", "6", "8"), 43 | selected = c("4", "6", "8"), inline = TRUE 44 | ) 45 | 46 | sliderInput("hp", "Horsepower", 47 | min = min(mtcars$hp), max = max(mtcars$hp), 48 | value = range(mtcars$hp) 49 | ) 50 | 51 | radioButtons("plot_type", "Weight plot type", 52 | choices = c("Histogram", "Violin plot"), selected = c("Histogram")) 53 | ``` 54 | 55 | ### Histogram of weight 56 | 57 | ```{r} 58 | renderPlot({ 59 | 60 | if(input$plot_type == "Histogram"){ 61 | ggplot(mpg_subset(), aes(x = wt)) + 62 | geom_histogram(binwidth = 0.25) + 63 | coord_cartesian(xlim = range(mtcars$wt)) 64 | } 65 | else { 66 | ggplot(mpg_subset(), aes(y = wt, x = factor(1))) + 67 | geom_violin() 68 | } 69 | 70 | }) 71 | ``` 72 | 73 | -------------------------------------------------------------------------------- /07-dashboards/apps/dashboard/movies.Rdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/07-dashboards/apps/dashboard/movies.Rdata -------------------------------------------------------------------------------- /08-more-react/08-more-react.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/08-more-react/08-more-react.pdf -------------------------------------------------------------------------------- /08-more-react/movies.Rdata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/08-more-react/movies.Rdata -------------------------------------------------------------------------------- /08-more-react/movies_11.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Enter text for plot title --------------------------------------------- 64 | textInput(inputId = "plot_title", 65 | label = "Plot title", 66 | placeholder = "Enter text to be used as plot title"), 67 | 68 | # Horizontal line for visual separation ----------------------- 69 | hr(), 70 | 71 | # Select which types of movies to plot ------------------------ 72 | checkboxGroupInput(inputId = "selected_type", 73 | label = "Select movie type(s):", 74 | choices = c("Documentary", "Feature Film", "TV Movie"), 75 | selected = "Feature Film"), 76 | 77 | # Select sample size ---------------------------------------------------- 78 | numericInput(inputId = "n_samp", 79 | label = "Sample size:", 80 | min = 1, max = nrow(movies), 81 | value = 50) 82 | ), 83 | 84 | # Output: ------------------------------------------------------- 85 | mainPanel( 86 | 87 | # Show scatterplot -------------------------------------------- 88 | plotOutput(outputId = "scatterplot"), 89 | br(), # a little bit of visual separation 90 | 91 | # Print number of obs plotted --------------------------------- 92 | uiOutput(outputId = "n"), 93 | br(), br(), # a little bit of visual separation 94 | 95 | # Show data table --------------------------------------------- 96 | DT::dataTableOutput(outputId = "moviestable") 97 | ) 98 | ) 99 | ) 100 | 101 | # Define server function required to create the scatterplot --------- 102 | server <- function(input, output) { 103 | 104 | # Create a subset of data filtering for selected title types ------ 105 | movies_subset <- reactive({ 106 | req(input$selected_type) # ensure availablity of value before proceeding 107 | filter(movies, title_type %in% input$selected_type) 108 | }) 109 | 110 | # Create new df that is n_samp obs from selected type movies ------ 111 | movies_sample <- reactive({ 112 | req(input$n_samp) # ensure availablity of value before proceeding 113 | sample_n(movies_subset(), input$n_samp) 114 | }) 115 | 116 | # Convert plot_title toTitleCase ---------------------------------- 117 | pretty_plot_title <- reactive({ toTitleCase(input$plot_title) }) 118 | 119 | # Create scatterplot object the plotOutput function is expecting -- 120 | output$scatterplot <- renderPlot({ 121 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, 122 | color = input$z)) + 123 | geom_point(alpha = input$alpha, size = input$size) + 124 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 125 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 126 | color = toTitleCase(str_replace_all(input$z, "_", " ")), 127 | title = isolate({ pretty_plot_title() }) 128 | ) 129 | }) 130 | 131 | # Print number of movies plotted ---------------------------------- 132 | output$n <- renderUI({ 133 | types <- movies_sample()$title_type %>% 134 | factor(levels = input$selected_type) 135 | counts <- table(types) 136 | 137 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 138 | }) 139 | 140 | # Print data table if checked ------------------------------------- 141 | output$moviestable <- DT::renderDataTable({ 142 | DT::datatable(data = movies_sample()[, 1:7], 143 | options = list(pageLength = 10), 144 | rownames = FALSE) 145 | }) 146 | } 147 | 148 | # Run the application ----------------------------------------------- 149 | shinyApp(ui = ui, server = server) 150 | -------------------------------------------------------------------------------- /08-more-react/movies_12.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Show data table --------------------------------------------- 64 | checkboxInput(inputId = "show_data", 65 | label = "Show data table", 66 | value = TRUE), 67 | 68 | # Enter text for plot title --------------------------------------------- 69 | textInput(inputId = "plot_title", 70 | label = "Plot title", 71 | placeholder = "Enter text to be used as plot title"), 72 | 73 | # Horizontal line for visual separation ----------------------- 74 | hr(), 75 | 76 | # Select which types of movies to plot ------------------------ 77 | checkboxGroupInput(inputId = "selected_type", 78 | label = "Select movie type(s):", 79 | choices = c("Documentary", "Feature Film", "TV Movie"), 80 | selected = "Feature Film"), 81 | 82 | # Select sample size ---------------------------------------------------- 83 | numericInput(inputId = "n_samp", 84 | label = "Sample size:", 85 | min = 1, max = nrow(movies), 86 | value = 50), 87 | 88 | # Get a new sample ------------------------------------------------------ 89 | actionButton(inputId = "get_new_sample", 90 | label = "Get new sample"), 91 | 92 | # A little bit of visual separation ------------------------------------- 93 | br(), br(), 94 | 95 | # Write sampled data as csv ------------------------------------------ 96 | actionButton(inputId = "write_csv", 97 | label = "Write CSV") 98 | 99 | ), 100 | 101 | # Output: ------------------------------------------------------- 102 | mainPanel( 103 | 104 | # Print how long app is being viewed for ---------------------- 105 | textOutput(outputId = "time_elapsed"), 106 | br(), 107 | 108 | # Show scatterplot -------------------------------------------- 109 | plotOutput(outputId = "scatterplot"), 110 | br(), # a little bit of visual separation 111 | 112 | # Print number of obs plotted --------------------------------- 113 | uiOutput(outputId = "n"), 114 | br(), br(), # a little bit of visual separation 115 | 116 | # Show data table --------------------------------------------- 117 | DT::dataTableOutput(outputId = "moviestable") 118 | ) 119 | ) 120 | ) 121 | 122 | # Define server function required to create the scatterplot --------- 123 | server <- function(input, output, session) { 124 | 125 | # Create a subset of data filtering for selected title types ------ 126 | movies_subset <- reactive({ 127 | req(input$selected_type) # ensure availablity of value before proceeding 128 | filter(movies, title_type %in% input$selected_type) 129 | }) 130 | 131 | # Update the maximum allowed n_samp for selected type movies ------ 132 | observe({ 133 | updateNumericInput(session, 134 | inputId = "n_samp", 135 | value = min(50, nrow(movies_subset())), 136 | max = nrow(movies_subset()) 137 | ) 138 | }) 139 | 140 | # Get new sample -------------------------------------------------- 141 | movies_sample <- eventReactive(eventExpr = input$get_new_sample, 142 | valueExpr = { 143 | req(input$n_samp) 144 | sample_n(movies_subset(), input$n_samp) 145 | }, 146 | ignoreNULL = FALSE 147 | ) 148 | 149 | # Convert plot_title toTitleCase ---------------------------------- 150 | pretty_plot_title <- reactive({ toTitleCase(input$plot_title) }) 151 | 152 | # Create scatterplot object the plotOutput function is expecting -- 153 | output$scatterplot <- renderPlot({ 154 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, 155 | color = input$z)) + 156 | geom_point(alpha = input$alpha, size = input$size) + 157 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 158 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 159 | color = toTitleCase(str_replace_all(input$z, "_", " ")), 160 | title = isolate({ pretty_plot_title() }) 161 | ) 162 | }) 163 | 164 | # Print number of movies plotted ---------------------------------- 165 | output$n <- renderUI({ 166 | types <- movies_sample()$title_type %>% 167 | factor(levels = input$selected_type) 168 | counts <- table(types) 169 | 170 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 171 | }) 172 | 173 | # Print data table if checked ------------------------------------- 174 | output$moviestable <- DT::renderDataTable( 175 | if(input$show_data){ 176 | DT::datatable(data = movies_sample()[, 1:7], 177 | options = list(pageLength = 10), 178 | rownames = FALSE) 179 | } 180 | ) 181 | 182 | # Write sampled data as csv --------------------------------------- 183 | observeEvent(eventExpr = input$write_csv, 184 | handlerExpr = { 185 | filename <- paste0("movies_", str_replace_all(Sys.time(), ":|\ ", "_"), ".csv") 186 | write.csv(movies_sample(), file = filename, row.names = FALSE) 187 | } 188 | ) 189 | 190 | # Calculate time diff bet when app is first launched and now ------ 191 | beg <- Sys.time() 192 | now <- reactive({ invalidateLater(millis = 1000); Sys.time() }) 193 | diff <- reactive({ round(difftime(now(), beg, units = "secs")) }) 194 | 195 | # Print time viewing app ------------------------------------------ 196 | output$time_elapsed <- renderText({ 197 | paste("You have been viewing this app for", diff(), "seconds.") 198 | }) 199 | 200 | } 201 | 202 | # Run the app ------------------------------------------------------- 203 | shinyApp(ui = ui, server = server) 204 | -------------------------------------------------------------------------------- /08-more-react/movies_13.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Show data table --------------------------------------------- 64 | checkboxInput(inputId = "show_data", 65 | label = "Show data table", 66 | value = TRUE), 67 | 68 | # Enter text for plot title --------------------------------------------- 69 | textInput(inputId = "plot_title", 70 | label = "Plot title", 71 | placeholder = "Enter text to be used as plot title"), 72 | 73 | # Horizontal line for visual separation ----------------------- 74 | hr(), 75 | 76 | # Select which types of movies to plot ------------------------ 77 | checkboxGroupInput(inputId = "selected_type", 78 | label = "Select movie type(s):", 79 | choices = c("Documentary", "Feature Film", "TV Movie"), 80 | selected = "Feature Film"), 81 | 82 | # Select sample size ---------------------------------------------------- 83 | numericInput(inputId = "n_samp", 84 | label = "Sample size:", 85 | min = 1, max = nrow(movies), 86 | value = 50), 87 | 88 | # A little bit of visual separation ------------------------------------- 89 | br(), br(), 90 | 91 | # Write sampled data as csv ------------------------------------------ 92 | actionButton(inputId = "write_csv", 93 | label = "Write CSV") 94 | 95 | ), 96 | 97 | # Output: ------------------------------------------------------- 98 | mainPanel( 99 | 100 | # Print how long app is being viewed for ---------------------- 101 | textOutput(outputId = "time_elapsed"), 102 | br(), 103 | 104 | # Show scatterplot -------------------------------------------- 105 | plotOutput(outputId = "scatterplot"), 106 | br(), # a little bit of visual separation 107 | 108 | # Print number of obs plotted --------------------------------- 109 | uiOutput(outputId = "n"), 110 | br(), br(), # a little bit of visual separation 111 | 112 | # Show data table --------------------------------------------- 113 | DT::dataTableOutput(outputId = "moviestable") 114 | ) 115 | ) 116 | ) 117 | 118 | # Define server function required to create the scatterplot --------- 119 | server <- function(input, output, session) { 120 | 121 | # Create a subset of data filtering for selected title types ------ 122 | movies_subset <- reactive({ 123 | req(input$selected_type) # ensure availablity of value before proceeding 124 | filter(movies, title_type %in% input$selected_type) 125 | }) 126 | 127 | # Update the maximum allowed n_samp for selected type movies ------ 128 | observe({ 129 | updateNumericInput(session, 130 | inputId = "n_samp", 131 | value = min(50, nrow(movies_subset())), 132 | max = nrow(movies_subset()) 133 | ) 134 | }) 135 | 136 | # Get new sample every 5 seconds ---------------------------------- 137 | movies_sample <- reactive({ invalidateLater(millis = 5000) 138 | req(input$n_samp) 139 | sample_n(movies_subset(), input$n_samp) 140 | }) 141 | 142 | # Convert plot_title toTitleCase ---------------------------------- 143 | pretty_plot_title <- reactive({ toTitleCase(input$plot_title) }) 144 | 145 | # Create scatterplot object the plotOutput function is expecting -- 146 | output$scatterplot <- renderPlot({ 147 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, 148 | color = input$z)) + 149 | geom_point(alpha = input$alpha, size = input$size) + 150 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 151 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 152 | color = toTitleCase(str_replace_all(input$z, "_", " ")), 153 | title = isolate({ pretty_plot_title() }) 154 | ) 155 | }) 156 | 157 | # Print number of movies plotted ---------------------------------- 158 | output$n <- renderUI({ 159 | types <- movies_sample()$title_type %>% 160 | factor(levels = input$selected_type) 161 | counts <- table(types) 162 | 163 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 164 | }) 165 | 166 | # Print data table if checked ------------------------------------- 167 | output$moviestable <- DT::renderDataTable( 168 | if(input$show_data){ 169 | DT::datatable(data = movies_sample()[, 1:7], 170 | options = list(pageLength = 10), 171 | rownames = FALSE) 172 | } 173 | ) 174 | 175 | # Write sampled data as csv --------------------------------------- 176 | observeEvent(eventExpr = input$write_csv, 177 | handlerExpr = { 178 | filename <- paste0("movies_", str_replace_all(Sys.time(), ":|\ ", "_"), ".csv") 179 | write.csv(movies_sample(), file = filename, row.names = FALSE) 180 | } 181 | ) 182 | 183 | # Calculate time diff bet when app is first launched and now ------ 184 | beg <- Sys.time() 185 | now <- reactive({ invalidateLater(millis = 1000); Sys.time() }) 186 | diff <- reactive({ round(difftime(now(), beg, units = "secs")) }) 187 | 188 | # Print time viewing app ------------------------------------------ 189 | output$time_elapsed <- renderText({ 190 | paste("You have been viewing this app for", diff(), "seconds.") 191 | }) 192 | 193 | } 194 | 195 | # Run the app ------------------------------------------------------- 196 | shinyApp(ui = ui, server = server) 197 | -------------------------------------------------------------------------------- /08-more-react/movies_14.R: -------------------------------------------------------------------------------- 1 | library(shiny) 2 | library(ggplot2) 3 | library(DT) 4 | library(stringr) 5 | library(dplyr) 6 | library(tools) 7 | load("movies.Rdata") 8 | 9 | # Define UI for application that plots features of movies ----------- 10 | ui <- fluidPage( 11 | 12 | # Application title ----------------------------------------------- 13 | titlePanel("Movie browser"), 14 | 15 | # Sidebar layout with a input and output definitions -------------- 16 | sidebarLayout( 17 | 18 | # Inputs: Select variables to plot ------------------------------ 19 | sidebarPanel( 20 | 21 | # Select variable for y-axis ---------------------------------- 22 | selectInput(inputId = "y", 23 | label = "Y-axis:", 24 | choices = c("IMDB rating" = "imdb_rating", 25 | "IMDB number of votes" = "imdb_num_votes", 26 | "Critics Score" = "critics_score", 27 | "Audience Score" = "audience_score", 28 | "Runtime" = "runtime"), 29 | selected = "audience_score"), 30 | 31 | # Select variable for x-axis ---------------------------------- 32 | selectInput(inputId = "x", 33 | label = "X-axis:", 34 | choices = c("IMDB rating" = "imdb_rating", 35 | "IMDB number of votes" = "imdb_num_votes", 36 | "Critics Score" = "critics_score", 37 | "Audience Score" = "audience_score", 38 | "Runtime" = "runtime"), 39 | selected = "critics_score"), 40 | 41 | # Select variable for color ----------------------------------- 42 | selectInput(inputId = "z", 43 | label = "Color by:", 44 | choices = c("Title Type" = "title_type", 45 | "Genre" = "genre", 46 | "MPAA Rating" = "mpaa_rating", 47 | "Critics Rating" = "critics_rating", 48 | "Audience Rating" = "audience_rating"), 49 | selected = "mpaa_rating"), 50 | 51 | # Set alpha level --------------------------------------------- 52 | sliderInput(inputId = "alpha", 53 | label = "Alpha:", 54 | min = 0, max = 1, 55 | value = 0.5), 56 | 57 | # Set point size ---------------------------------------------- 58 | sliderInput(inputId = "size", 59 | label = "Size:", 60 | min = 0, max = 5, 61 | value = 2), 62 | 63 | # Show data table --------------------------------------------- 64 | checkboxInput(inputId = "show_data", 65 | label = "Show data table", 66 | value = TRUE), 67 | 68 | # Enter text for plot title --------------------------------------------- 69 | textInput(inputId = "plot_title", 70 | label = "Plot title", 71 | placeholder = "Enter text to be used as plot title"), 72 | 73 | # Horizontal line for visual separation ----------------------- 74 | hr(), 75 | 76 | # Select which types of movies to plot ------------------------ 77 | checkboxGroupInput(inputId = "selected_type", 78 | label = "Select movie type(s):", 79 | choices = c("Documentary", "Feature Film", "TV Movie"), 80 | selected = "Feature Film"), 81 | 82 | # Select sample size ---------------------------------------------------- 83 | numericInput(inputId = "n_samp", 84 | label = "Sample size:", 85 | min = 1, max = nrow(movies), 86 | value = 50), 87 | 88 | # A little bit of visual separation ------------------------------------- 89 | br(), br(), 90 | 91 | # Write sampled data as csv ------------------------------------------ 92 | actionButton(inputId = "write_csv", 93 | label = "Write CSV") 94 | 95 | ), 96 | 97 | # Output: ------------------------------------------------------- 98 | mainPanel( 99 | 100 | # Print how long app is being viewed for ---------------------- 101 | textOutput(outputId = "time_elapsed"), 102 | br(), 103 | 104 | # Show scatterplot -------------------------------------------- 105 | plotOutput(outputId = "scatterplot"), 106 | br(), # a little bit of visual separation 107 | 108 | # Print number of obs plotted --------------------------------- 109 | uiOutput(outputId = "n"), 110 | br(), br(), # a little bit of visual separation 111 | 112 | # Use tabs for the data tables to reduce clutter ------------------------ 113 | tabsetPanel( 114 | # Show data table ----------------------------------------------------- 115 | tabPanel("Plotted data", DT::dataTableOutput(outputId = "moviestable")), 116 | 117 | # Show CSV files in directory ----------------------------------------- 118 | tabPanel("Files in directory", DT::dataTableOutput(outputId = "csv_files")) 119 | ) 120 | 121 | ) 122 | ) 123 | ) 124 | 125 | # Define server function required to create the scatterplot --------- 126 | server <- function(input, output, session) { 127 | 128 | # Create a subset of data filtering for selected title types ------ 129 | movies_subset <- reactive({ 130 | req(input$selected_type) # ensure availablity of value before proceeding 131 | filter(movies, title_type %in% input$selected_type) 132 | }) 133 | 134 | # Update the maximum allowed n_samp for selected type movies ------ 135 | observe({ 136 | updateNumericInput(session, 137 | inputId = "n_samp", 138 | value = min(50, nrow(movies_subset())), 139 | max = nrow(movies_subset()) 140 | ) 141 | }) 142 | 143 | # Get new sample every 5 seconds ---------------------------------- 144 | movies_sample <- reactive({ invalidateLater(millis = 5000) 145 | req(input$n_samp) 146 | sample_n(movies_subset(), input$n_samp) 147 | }) 148 | 149 | # Convert plot_title toTitleCase ---------------------------------- 150 | pretty_plot_title <- reactive({ toTitleCase(input$plot_title) }) 151 | 152 | # Create scatterplot object the plotOutput function is expecting -- 153 | output$scatterplot <- renderPlot({ 154 | ggplot(data = movies_sample(), aes_string(x = input$x, y = input$y, 155 | color = input$z)) + 156 | geom_point(alpha = input$alpha, size = input$size) + 157 | labs(x = toTitleCase(str_replace_all(input$x, "_", " ")), 158 | y = toTitleCase(str_replace_all(input$y, "_", " ")), 159 | color = toTitleCase(str_replace_all(input$z, "_", " ")), 160 | title = isolate({ pretty_plot_title() }) 161 | ) 162 | }) 163 | 164 | # Print number of movies plotted ---------------------------------- 165 | output$n <- renderUI({ 166 | types <- movies_sample()$title_type %>% 167 | factor(levels = input$selected_type) 168 | counts <- table(types) 169 | 170 | HTML(paste("There are", counts, input$selected_type, "movies in this dataset.
")) 171 | }) 172 | 173 | # Print data table if checked ------------------------------------- 174 | output$moviestable <- DT::renderDataTable( 175 | if(input$show_data){ 176 | DT::datatable(data = movies_sample()[, 1:7], 177 | options = list(pageLength = 10), 178 | rownames = FALSE) 179 | } 180 | ) 181 | 182 | # Write sampled data as csv --------------------------------------- 183 | observeEvent(eventExpr = input$write_csv, 184 | handlerExpr = { 185 | filename <- paste0("movies_", str_replace_all(Sys.time(), ":|\ ", "_"), ".csv") 186 | write.csv(movies_sample(), file = filename, row.names = FALSE) 187 | } 188 | ) 189 | 190 | # Calculate time diff bet when app is first launched and now ------ 191 | beg <- Sys.time() 192 | now <- reactive({ invalidateLater(millis = 1000); Sys.time() }) 193 | diff <- reactive({ round(difftime(now(), beg, units = "secs")) }) 194 | 195 | # Print time viewing app ------------------------------------------ 196 | output$time_elapsed <- renderText({ 197 | paste("You have been viewing this app for", diff(), "seconds.") 198 | }) 199 | 200 | # Helper funs to count and list CSV files in the directory ------------------ 201 | 202 | # Check function 203 | count_files <- function(){ length(dir(pattern = "*.csv")) } 204 | 205 | # Value retrieval function 206 | list_files <- function(){ 207 | files <- dir(pattern = "*.csv") 208 | if(length(files) == 0){ return( data.frame() ) } 209 | sapply(files, function(file) dim(read.csv(file))) %>% 210 | unlist() %>% 211 | t() %>% 212 | as.data.frame() %>% 213 | setNames(c("rows", "cols")) 214 | } 215 | 216 | # Count and list CSV files in the directory every 5 seconds ----------------- 217 | csv_files <- reactivePoll(intervalMillis = 5000, 218 | session, 219 | checkFunc = count_files, 220 | valueFunc = list_files) 221 | 222 | # Print CSV files in the directory ------------------------------------------ 223 | output$csv_files <- DT::renderDataTable( 224 | DT::datatable(data = csv_files(), 225 | options = list(pageLength = 10), 226 | rownames = TRUE) 227 | ) 228 | 229 | } 230 | 231 | # Run the app ------------------------------------------------------- 232 | shinyApp(ui = ui, server = server) 233 | -------------------------------------------------------------------------------- /09-wrap-up/09-wrap-up.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/09-wrap-up/09-wrap-up.pdf -------------------------------------------------------------------------------- /Icon : -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rstudio-education/intro-shiny-rmarkdown/bee548bd18556834762851bfda7747502ac2ddb2/Icon -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rstudioconf-2018-intro-shiny-rmarkdown 2 | 3 | Materials for the "Intro to Shiny and R Markdown" 2-day workshop at [rstudio::conf 2018](https://www.rstudio.com/conference/). 4 | 5 | --- 6 | 7 | ## Locating the materials 8 | 9 | * Option 1 - :cloud: RStudio Cloud: [bit.ly/shiny-rmd-cloud](bit.ly/shiny-rmd-cloud) 10 | 11 | * Option 2 - :computer: Local installation: [bit.ly/shiny-rmd-repo](bit.ly/shiny-rmd-repo) 12 | 13 | --- 14 | 15 | ## Outline 16 | 17 | ### Day 1: January 31 18 | 19 | #### :computer: 09:00 - 10:30: Session 1 - Getting started with Markdown 20 | - 00 - Welcome: Getting started instructions + motivation + demo 21 | - 01 - Composing your prose with Markdown: 22 | - Text and headers 23 | - Links and images 24 | - Math text 25 | - Tables 26 | - The Markdown Quick Reference 27 | - Your turn: From plain text to embellished 28 | 29 | #### :coffee: 10:30 - 11:00: Morning break 30 | 31 | #### :computer: 11:00 - 12:00: Session 2 - Putting the R in R Markdown 32 | - 02 - Structuring your analysis with R Markdown: 33 | - Embedding R code -- in chunks and inline 34 | - Chunk and global options 35 | - Other languages 36 | - Output options 37 | - Output formats 38 | - Your turn: Restructure from plain R Markdown to xaringan slides or Tufte document 39 | 40 | #### :fork_and_knife: 12:00 - 13:00: Lunch 41 | 42 | #### :computer: 13:00 - 15:00: Session 3 - Upping your R Markdown game 43 | - Tables 44 | - Bibliography and citation 45 | - Templates 46 | - Parameterized reports 47 | 48 | #### :coffee: 15:00 - 15:30: Afternoon break 49 | 50 | #### :computer: 15:30 - 17:00: Session 4 - First dip into interactivity 51 | - Dashboards 52 | - Embedding htmlwidgets in documents 53 | - Embedding Shiny apps in documents 54 | - Troubleshooting tips + Q & A 55 | 56 | ### Day 2: February 1 57 | 58 | #### :computer: 09:00 - 10:30: Session 1 - Getting started with Shiny 59 | - 04 - Getting started with Shiny: 60 | - High level view 61 | - Anatomy of a Shiny app 62 | - UI / Server 63 | - File structure 64 | - Deploying an app 65 | 66 | #### :coffee: 10:30 - 11:00: Morning break 67 | 68 | #### :computer: 11:00 - 12:00: Session 2 - Understanding reactivity 69 | - 05 - Understanding reactivity: 70 | - Reactivity 101 71 | - Reactive flow 72 | - Implementation 73 | - Render functions 74 | 75 | #### :fork_and_knife: 12:00 - 13:00: Lunch 76 | 77 | #### :computer: 13:00 - 15:00: Session 3 - Designing UI 78 | - Interface builder functions 79 | - Tabs 80 | - shinythemes 81 | 82 | #### :coffee: 15:00 - 15:30: Afternoon break 83 | 84 | #### :computer: 15:30 - 17:00: Session 4 - Dashboards 85 | - What's in a dashboard? 86 | - flexdashboards 87 | - Where to go next? 88 | 89 | --- 90 | 91 | ## Setup instructions 92 | 93 | ### Install 94 | 95 | ``` 96 | from_cran <- c("shiny", "rmarkdown", 97 | "DT", "devtools", "flexdashboard", "gapminder", 98 | "rticles", "shinydashboard", "shinythemes", 99 | "tidyverse", "tufte", "xaringan") 100 | 101 | install.packages(from_cran, repos = "http://cran.rstudio.com") 102 | ``` 103 | 104 | ### Load 105 | 106 | ``` 107 | library(shiny) 108 | library(rmarkdown) 109 | ... # load the remaining packages similarly 110 | ``` 111 | -------------------------------------------------------------------------------- /cond/app.R: -------------------------------------------------------------------------------- 1 | # 2 | # This is a Shiny web application. You can run the application by clicking 3 | # the 'Run App' button above. 4 | # 5 | # Find out more about building applications with Shiny here: 6 | # 7 | # http://shiny.rstudio.com/ 8 | # 9 | 10 | library(shiny) 11 | 12 | # Define UI for application that draws a histogram 13 | ui <- fluidPage( 14 | 15 | titlePanel("Conditional panels"), 16 | 17 | column(4, wellPanel( 18 | sliderInput("n", "Number of points:", 19 | min = 10, max = 200, value = 50, step = 10) 20 | )), 21 | 22 | column(5, 23 | "The plot below will be not displayed when the slider value", 24 | "is less than 50.", 25 | 26 | # With the conditionalPanel, the condition is a JavaScript 27 | # expression. In these expressions, input values like 28 | # input$n are accessed with dots, as in input.n 29 | conditionalPanel("input.n >= 50", 30 | plotOutput("scatterPlot", height = 300) 31 | ) 32 | ) 33 | ) 34 | 35 | # Define server logic required to draw a histogram 36 | server <- function(input, output) { 37 | 38 | output$scatterPlot <- renderPlot({ 39 | x <- rnorm(input$n) 40 | y <- rnorm(input$n) 41 | plot(x, y) 42 | }) 43 | 44 | } 45 | 46 | # Run the application 47 | shinyApp(ui = ui, server = server) 48 | 49 | -------------------------------------------------------------------------------- /data/burritos_01022018.csv: -------------------------------------------------------------------------------- 1 | Location,Burrito,Date,Neighborhood,Address,URL,Yelp,Google,Chips,Cost,Hunger,Mass (g),Density (g/mL),Length,Circum,Volume,Tortilla,Temp,Meat,Fillings,Meat:filling,Uniformity,Salsa,Synergy,Wrap,overall,Rec,Reviewer,Notes,Unreliable,NonSD,Beef,Pico,Guac,Cheese,Fries,Sour cream,Pork,Chicken,Shrimp,Fish,Rice,Beans,Lettuce,Tomato,Bell peper,Carrots,Cabbage,Sauce,Salsa,Cilantro,Onion,Taquito,Pineapple,Ham,Chile relleno,Nopales,Lobster,Queso,Egg,Mushroom,Bacon,Sushi,Avocado,Corn,Zucchini 2 | Donato's taco shop,California ,1/18/2016,Miramar,6780 Miramar Rd,http://donatostacoshop.net/,3.5,4.2,,6.49,3,,,,,,3,5,3,3.5,4,4,4,4,4,3.8,,Scott,good fries: 4/5,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 3 | Oscar's Mexican food,California ,1/24/2016,San Marcos,225 S Rancho Santa Fe Rd,http://www.yelp.com/biz/oscars-mexican-food-san-marcos,3.5,3.3,,5.45,3.5,,,,,,2,3.5,2.5,2.5,2,4,3.5,2.5,5,3,,Scott,Fries: 3/5; too little meat,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 4 | Oscar's Mexican food,Carnitas,1/24/2016,,,,,,,4.85,1.5,,,,,,3,2,2.5,3,4.5,4,3,3,5,3,,Emily,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 5 | Oscar's Mexican food,Carne asada,1/24/2016,,,,,,,5.25,2,,,,,,3,2,3.5,3,4,5,4,4,5,3.75,,Ricardo,Go to average burrito place like Rigoberto's in la jolla; Terrible tamales,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6 | Pollos Maria,California,1/27/2016,Carlsbad,3055 Harding St,http://pollosmaria.com/,4,3.8,x,6.59,4,,,,,,4,5,4,3.5,4.5,5,2.5,4.5,4,4.2,,Scott,,,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 7 | Pollos Maria,combo chicken,1/28/2016,,,,,,,6.99,4,,,,,,3,4,5,3.5,2.5,2.5,2.5,4,1,3.2,,Emily,,,,,,x,x,,x,,x,,,x,x,x,x,,,,,,,,,,,,,,,,,,,,, 8 | Nico's Taco Shop,California,1/30/2016,Carmel Valley,3860 Valley Centre Dr #404,http://www.yelp.com/biz/nicos-taco-shop-san-diego,3,2.9,,7.19,1.5,,,,,,2,3,3,2,2.5,2.5,,2,3,2.6,,Scott,not fries. big potatoes,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 9 | Nico's Taco Shop,Carnitas,1/30/2016,,,,,,,6.99,4,,,,,,2.5,3,3,2.5,3,3.5,,2.5,3,3,,Emily,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 10 | Los Primos Mexican Food,Monster California,2/1/2016,UTC,7770 Regents Rd,http://www.primosmex.com/,3,3.7,x,9.25,3.5,,,,,,2,4.5,4.5,3.5,1.5,3,3.5,4,2,3.9,,Scott,this tasted really bad leftover. not included in rating,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 11 | JV's Mexican Food,Carne Asada,2/6/2016,Morena,1112 Morena Blvd,http://jvsmexfood.com/,4,4.1,,6.25,3.5,,,,,,2.5,1.5,1.5,3,4.5,3,1.5,2,4.5,2,,Scott,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 12 | JV's Mexican Food,Surf & Turf,2/6/2016,,,,,,,9.5,2,,,,,,2.5,2.5,2.75,2.5,2.5,2,0.5,3,3.5,2.5,,Emily,Huge. Shrimp is good. Meat is normal,,,x,,x,,,,,,x,,x,,,,x,,,,,,,,,,,,,,,,,,,, 13 | Tony's Fresh Mexican Food,Chile verde pork,2/11/2016,Miramar,7122 Miramar Rd,https://www.yelp.com/biz/tonys-fresh-mexican-food-san-diego,3,4.1,x,6.95,2,,,,,,3,4,4,3,4,4,1,2,1,3,,Marc,,,,,x,,,x,,x,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,, 14 | Tony's Fresh Mexican Food,California,2/11/2016,,,,,,,6.25,3.5,,,,,,3,3.5,3.5,4,2,3.5,1,4,4,3.9,,Scott,,,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 15 | Tony's Fresh Mexican Food,battered fish ,2/11/2016,,,,,,,6.99,3,,,,,,3,1,1.5,2.5,4,4,3,4.5,5,2,,Nicole,,,,,,,,,,,,,x,,,,,,,x,x,,,,,,,,,,,,,,,,, 16 | Tony's Fresh Mexican Food,California,2/11/2016,,,,,,,6.25,3,,,,,,4,,2,2,4,4,,3,4,2.75,,Cris,"to-go, no guac or sour cream, fries are a small and underdone",,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 17 | Taco Stand,California,2/12/2016,La Jolla,621 Pearl St,http://letstaco.com/,4.5,4.4,,7.49,4,,,,,,3,2.5,4,4,3.5,2.5,3.5,5,4.5,4.2,,Emily,Horchata is very sweet,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 18 | Taco Stand,Surf and turf ,2/12/2016,,,,,,,8.49,2.5,,,,,,4,4,4.5,4,5,4.5,3.5,4,2,4.1,,Scott,,,,x,x,x,,,,,,x,,,,,,,,x,,,,,,,,,,,,,,,,,, 19 | Graciela's Taco Shop,Adobada ,2/14/2016,Bonita,5047 Central Ave,https://www.yelp.com/biz/gracielas-taco-shop-bonita-2,4,4.5,,5.99,3,,,,,,4,4,3,3.5,4,4.5,4,4,4.5,4,,Scott,Salsa verde spicy,,,,,,,,,x,,,,,x,,,,,,,x,x,x,,,,,,,,,,,,,, 20 | Graciela's Taco Shop,Barbacoa,2/14/2016,,,,,,,5.99,2,,,,,,3.5,4,3.5,,4,,4,4,1.5,4,,Emily,,,,x,,,,,,,,,,,,,,,,,,,x,x,,,,,,,,,,,,,, 21 | Rigoberto's Taco Shop La Jolla,California,2/17/2016,La Jolla,7345 La Jolla Blvd,https://www.yelp.com/biz/rigobertos-la-jolla-2,2.5,4,,6.4,4,,,,,,3,4,2.75,3,4,2,2,,5,3,,Leo,,,,x,x,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 22 | Rigoberto's Taco Shop La Jolla,California,2/17/2016,,,,,,,6.4,2.5,,,,,,3.5,3,3,3,4,4,1.5,,4.5,3.5,,Scott,,,,x,x,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 23 | Lolita's taco shop,2 in 1,2/24/2016,Kearny Mesa,7305 Clairemont Mesa Blvd,http://lolitasmexicanfood.com/,4,4.4,,8.75,3.5,,,,,,1.5,2,3,3.5,4,1,3.5,4.5,4,4,,Scott,Rolled tacos need more meat,,,x,,x,x,,,,,,,,,,,,,,,,,,x,,,,,,,,,,,,, 24 | Lolita's taco shop,Adobado,2/24/2016,,,,,,,5.5,2.5,,,,,,1.5,2.5,3.5,3,4,1.5,2.5,3.5,4.5,3.5,,Emily,Adobado reminds me of Indian food because of some mystery spice,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 25 | Taco Stand,California,2/28/2016,,,,,,,7.49,2.5,,,,,,4,3,4,4,4,4,4,4,3,4.6,,Scott,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 26 | Taco Stand,California,2/28/2016,,,,,,,7.49,2.5,,,,,,3,2,4.5,4,4,3.5,3,4.5,4.5,4.5,,Emily,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 27 | Lola's 7 Up Market & Deli,Shredded beef,2/29/2016,Carlsbad,3292 Roosevelt St,https://www.yelp.com/biz/lolas-7-up-market-and-deli-carlsbad,4.5,4.9,,6,3.5,,,,,,2.5,2.5,3,4,4,4,3,3.5,1.5,3.8,,Emily,Food cooks fast but checking out is painfully slow,,,x,x,,x,,,,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 28 | Lola's 7 Up Market & Deli,Carne asada,2/29/2016,,,,,,,7,3.5,,,,,,2.5,3,3,4,2,2,3,3.5,3.5,3,,Scott,Beans are surprisingly good,,,x,x,x,x,,,,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 29 | Colima's Mexican Food,Hawaiian,3/3/2016,North park,2302 University Ave,https://www.yelp.com/biz/colimas-mexican-food-san-diego,4,4.2,,6.29,3.5,,,,,,3.5,5,4,4,3.5,4.5,3.5,3.5,4,4,,Scott,,,,,,,x,,,x,,,,,,,,,,,,,,,,x,x,,,,,,,,,,, 30 | Colima's Mexican Food,Bandido,3/3/2016,,,,,,,6.49,4.5,,,,,,3,5,4,4,5,4,2.5,4.5,4,4,,Sage,,,,x,,,,,,,,,,x,x,,,,,,x,,,,,,,x,,,,,,,,,, 31 | Colima's Mexican Food,Bandido,3/3/2016,,,,,,,6.49,4.5,,,,,,3,4.5,3.5,3.5,3.5,3,3,3,4,3,,Eli,Promising start but finished poorly,,,x,,,,,,,,,,x,x,,,,,,x,,,,,,,x,,,,,,,,,, 32 | Rigoberto's Taco Shop,Carne asada,3/8/2016,Miramar,7094 Miramar Rd,https://www.yelp.com/biz/rigobertos-taco-shop-san-diego-2,4,4.4,,6.6,3.5,,,,,,4,2,4,3.5,4.5,4,3.5,4,1,4.25,,Ricardo,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 33 | Rigoberto's Taco Shop,Campeon,3/8/2016,,,,,,,7.65,3.5,,,,,,3,1.5,3,3,2.5,3,3.5,2.5,4,3.4,,Scott,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 34 | Raul's Mexican food,Chile verde pork,3/11/2016,Encinitas,490 S Coast Hwy 101,https://www.yelp.com/biz/rauls-shack-encinitas,4,4.2,,5,3.5,,,,,,2,,2.5,2,2,2,2,2.5,,2,,Emily,,,,,,,,,,x,,,,,x,,,,,,,x,,,,,,,,,,,,,,,, 35 | Raul's Mexican food,carne asada,3/11/2016,,,,,,,5,1,,,,,,2,,1,1,0.5,1,1.5,1,4,1,,Scott,burrito was mostly tortilla,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 36 | El Zarape,California,3/14/2016,University Heights,4642 Park Blvd,https://www.yelp.com/biz/el-zarape-san-diego,4,4.4,x,6.25,0.5,,,,,,3,5,4,2.75,4,1.6,3.5,3.4,5,3.33333,,Kelsey,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 37 | El Zarape,California chicken,3/14/2016,,,,,,,6.25,3,,,,,,3.5,5,2.5,2.5,4,2.7,3.5,3,5,2.5,,Sage,,,,,x,x,x,x,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,, 38 | El Zarape,Azteca,3/14/2016,,,,,,,6.25,3.75,,,,,,3,5,5,4.5,4,4,1.5,3,5,3,,Jake,,,,x,x,,x,,,,,,,,x,,,,,,,,,,,,,,x,,,,,,,,, 39 | El Zarape,Lobster,3/14/2016,,,,,,,9.5,3,,,,,,3,3,4,3,3.5,4.5,3.5,3,3.5,3.2,,Scott,quite small,,,,,,,,,,,,,,,,x,,,x,x,,,,,,,,,x,,,,,,,, 40 | El Indio,California,3/17/2016,San Diego,3695 India St,http://elindiosandiego.com/,3.5,3.9,,7.84,4,,,,,,4,4,3.5,4,4.5,4,3.5,3.5,4.5,4,,Scott,,,,x,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 41 | Taco stand,Carne asada,3/18/2016,,,,,,,7.89,1,,,,,,3,3.5,4.5,4,5,5,4.5,3.5,5,4.2,,Scott,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 42 | Taco stand,Al pastor,3/18/2016,,,,,,,6.99,4,,,,,,4,3,3.5,3,4,5,3,3.5,5,3.5,,Emily,Kind of dry ,,,,,,,,,x,,,,,,,,,,,,,x,x,,x,,,,,,,,,,,, 43 | "Qdoba Mexican Grill, Seatac Airport",Custom,3/19/2016,Seattle,Airport,,,,,9.5,5,,,,,,3,3,3.5,3,4,1,3,2.5,5,3,,Sage,,x,,,x,x,x,,,x,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,, 44 | Cancun Mexican & Seafood,California,3/20/2016,Encinitas,1766 N Coast Hwy,http://cancunmexicanandseafood.com/,4.5,4.1,x,6.99,4,,,,,,4,4.5,4,3.5,4,2.5,2,4,4,4.2,,Scott,A bit small,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 45 | Cancun Mexican & Seafood,Machaca,3/20/2016,,,,,,,5.99,3,,,,,,4,3.5,3.5,4,3.5,3.5,2,3.5,0.5,3.9,,Emily,So hot! Egg is surprisingly good,,,x,,,,,,,,,,,,,,x,,,,,,x,,,,,,,,x,,,,,, 46 | Vallarta express,Quesaburro,3/21/2016,Clairemont,4277 Genesee Ave,http://www.vallartaexpress.com/menu/,3.5,4,,6.95,3.5,,,,,,3,4,3.5,4,4,4,3.5,4.5,4.5,4.1,,Scott,,,,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 47 | Vallarta express,Philly ,3/21/2016,,,,,,,6.95,4,,,,,,3,4.5,4,3,3,2,4,2,4.5,3,,Torben,Guac chips have lots of cheese,,,x,,,x,,,,,,,,,,,x,,,,x,,,,,,,,,,,x,x,,,, 48 | Vallarta express,Carne asada,3/21/2016,,,,,,,6.5,3.5,,,,,,3.75,5,3,3,4.5,4.5,3.5,3,4.5,3.25,,Ricardo,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 49 | Vallarta express,Quesa,3/21/2016,,,,,,,6.95,4.5,,,,,,2,5,3.5,4,2.5,5,3.5,2.5,4,3.75,,Alex,Heart-stopping amount of cheese. Second tortilla of cheese,,,x,x,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,, 50 | Vallarta express,Surf and turf,3/21/2016,,,,,,,7.65,3,,,,,,2,4,3,3,4,2,4,2,3,3.5,,Richard,Hot carrots,,,x,,x,,,x,,,x,,x,x,,,,,,,,,,,,,,,,,,,,,,, 51 | Vallarta express,Mahi,3/21/2016,,,,,,,7.3,3,,,,,,3,4.5,3.5,3,3,2,3.5,2.5,4.5,3.5,,Tom,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 52 | Mikes Taco Club,California,3/23/2016,Ocean Beach,5060 Newport Ave,http://www.mikestacoclub.com/menu/,4.5,4.9,,8.59,2.5,,,,,,4,4.5,3.5,5,2.5,2,4,4.5,4,4.3,,Scott,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 53 | Mikes Taco Club,California,3/23/2016,,,,,,,8.59,3.5,,,,,,4.5,4.5,4,4.5,4,4,4,4.5,5,4.5,,Brad,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 54 | La Perla Cocina,Addiction,3/30/2016,Pacific Beach,745 Emerald St,https://www.yelp.com/biz/la-perla-cocina-mexicana-san-diego,4.5,4.7,,7.99,3.5,,,,,,4,4,2,3,1.5,3,2.5,1,3,2.5,,Scott,Bland,,,x,x,x,,,,,,,,,x,,,,,,,,,,,,,,,,,,x,,,,, 55 | La Perla Cocina,Oaxacalifornia,3/30/2016,,,,,,,9.99,3,,,,,,4,4.5,3.5,4,3,2,2.5,3.5,4,4,,Emily,Fries are good,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 56 | Porkyland ,Deborah's special,4/2/2016,Carmel Valley,4645 Carmel Mountain Rd,http://goporkyland.com/,4,4.4,x,8.25,3.5,,,,,,4,4.5,3.5,2.5,4.5,4.5,4,3.5,5,4,,Scott,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,x,,,,,,,,, 57 | Porkyland ,Chicken nopalito,4/2/2016,,,,,,,7.95,2.5,,,,,,2.5,2.5,4,3.5,3,2.5,3,3,5,3.3,,Emily,,,,,,x,,,,,x,,,,,,,,,,x,,,,,,,,x,,,,,,,,, 58 | Porkyland ,Chicken nopalito,4/2/2016,,,,,,,7.95,2,,,,,,4,5,4,4,3,5,3,3,5,4,,Tara,,,,,,x,,,,,x,,,,,,,,,,x,,,,,,,,x,,,,,,,,, 59 | Porkyland ,California,4/2/2016,,,,,,,8.75,3,,,,,,4,5,3,5,3,2,4,3,5,4,,Andy,,,,x,,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 60 | Rigoberto's Taco Shop,California ,4/3/2016,,,,,,,6.6,3,,,,,,3,4.5,4,4.5,4,4.5,4.5,5,4.5,4.5,,Scott,,,,x,,,x,x,,,,,,,,,,,,,x,,,,,,,,,,,,,,,,, 61 | Rigoberto's Taco Shop,Adobada,4/3/2016,,,,,,,6.6,3,,,,,,4,5,5,5,5,4,,4.5,5,4.5,,Tara,,,,,,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 62 | Rigoberto's Taco Shop,California,4/7/2016,,,,,,,6.6,3,,,,,,3,5,3.5,3,4.5,2.5,3,4,4,3.6,,Scott,Too much enchilada sauce this time,,,x,,,x,x,,,,,,,,,,,,,x,,,,,,,,,,,,,,,,, 63 | Rigoberto's Taco Shop,Surf & Turf,4/7/2016,,,,,,,7.45,3.5,,,,,,3,5,3.5,2.5,3,2.5,3.75,3,4,3,,Bankole,Would have enjoyed it more if wasn't rating; shrimp better than meat. Quality of the shrimp really improves the burrito. Well cooked and fresh. Shrimp could have had more flavor,,,x,,,x,,,,,x,,x,,,,,,,,,,,,,,,,,,,,,,,, 64 | Rudy's Taco Shop,Chicken,4/9/2016,Solana Beach,524 Stevens Ave,http://www.rudystacoshop.com/,4,4.3,,6.6,3.5,,,,,,3.5,3,4,4.5,3,1,3,4,0.5,2.8,No,Scott,"Salsa Fresca is good, way too small",,,,X,X,,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,, 65 | Rudy's Taco Shop,Carnitas,4/9/2016,,,,,,,6.6,3,,,,,,3,2.5,3,4,2,1,3,3,5,3,No,Emily,,,,,X,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 66 | Taco stand,Carne asada,4/14/2016,,,,,,,7.89,3.5,,,,,,3,2,4.5,4,4,1.5,4.5,4.5,4.5,4.4,Yes,Scott,Too small ,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 67 | Taco stand,Carne asada,4/14/2016,,,,,,,7.89,2,,,,,,3,2.5,4.5,3.5,4.5,3,4,3.5,5,3.5,Yes,Richard,A little small. No rice and beans or cheese or sour cream,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 68 | California Burritos,California Everything,4/15/2016,Linda Vista,7754 Starling Dr,https://www.yelp.com/biz/california-burritos-san-diego,4.5,4.4,x,6.25,4,,,,,,4.5,4.5,2.5,3.5,3.5,3.5,3,4,5,4.1,Yes,Scott,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 69 | California Burritos,California Everything,4/15/2016,,,,,,,6.25,3.5,,,,,,4,4,4,2.5,3,3.5,4,4,5,4,No,Brent,Brent doesn't like fries in his burrito,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 70 | California Burritos,California Everything,4/15/2016,,,,,,,6.25,4,,,,,,4,4.5,4.5,5,5,5,4.5,5,5,4.6,Yes,Luis,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 71 | California Burritos,Chile relleno and carnitas,4/15/2016,,,,,,,6.5,5,,,,,,4.5,5,5,5,5,4,4,5,5,4.7,Yes,Karl,,x,,,x,,x,,x,x,,,,x,,,,,,,,,,,,,,x,,,,,,,,,, 72 | California Burritos,California (only cheese),4/15/2016,,,,,,,6.25,2,,,,,,5,5,5,4,4,2,,5,5,5,Yes,Kalen,,x,,x,,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 73 | Vallarta express,Fish,4/15/2016,,,,,,,6.5,2.5,,,,,,3,,3.5,4,4,3,,4,1.5,3.5,,Erin,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 74 | Vallarta express,California,4/15/2016,,,,,,,6.65,3.5,,,,,,3.5,,3.5,3.5,4.5,3.5,3.5,4,4,4,,Ricardo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 75 | Jorge's Mexicatessen,California ,4/24/2016,Encinitas ,267 N El Camino Real,https://www.yelp.com/biz/jorges-mexicatessen-encinitas,4,4.5,,5.95,3.5,,,20,22,0.77,2.5,2.5,3.5,4,3,4.5,4,4.5,4.5,3.8,Yes,Scott,"Cheese should be melted, potatoes are very good",,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 76 | Jorge's Mexicatessen,Chimichanga beef,4/24/2016,,,,,,,5.5,3,,,,,,2,4,3,3,3,4,3.5,3.5,,3,No,Emily,,,,X,X,X,X,,X,,,,,X,X,,,,,,X,,,,,,,,,,,,,,,,, 77 | Senor Grubby's,California,4/24/2016,Carlsbad,377 Carlsbad Village Dr,eatgrubbys.com,4,4.1,,9,2,,,19,21.5,0.7,2,3.5,3,1.5,1,1,2.5,1.5,3.5,1.5,No,Scott,"The ends of the burrito were decent, but the middle was terrible without much meat",,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 78 | Senor Grubby's,Pastor,4/24/2016,,,,,,,9,2,,,18.5,23,0.78,2.5,2.5,1.5,2.5,1,2,2.5,2,5,1.8,No,Emily,,,,,,x,,,,x,,,,,,,,,,,,,x,x,,,,,,,,,,,,,, 79 | Taco stand,California,4/25/2026,,,,,,,8,4,,,21.59,,,4.5,5,5,5,4.5,5,3,5,5,4.9,Yes,Sage,A wonderful eating experience. best California burrito I've ever had by far. ,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 80 | Mi Asador Mexican & Seafood ,California ,4/27/2016,Oceanside,4750 Oceanside Blvd,https://sites.google.com/site/miasador/,4.5,4.4,x,6.89,3,,,25,22,0.96,3,2.5,3,2.5,2.5,2,3.5,3,4,3,No,Scott,,,,X,,X,x,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 81 | Mi Asador Mexican & Seafood ,El Hawaiiano ,4/27/2016,,,,,,,6.39,3,,,23,22.5,0.93,4,3,2.5,3.5,3,3,3.5,4,3.5,3.5,Yes,Emily,Pineapple is really good,,,X,,X,X,,X,,,,,,,,,,,,,,,,,X,,,,,,,,,,,, 82 | Sotos Mexican Food,California,5/4/2016,Miramar ,6904 Miramar Rd,https://www.yelp.com/biz/sotos-mexican-food-san-diego,4.5,4.6,x,6.75,3,,,22.5,23,0.95,4.5,4,3,4,1,3,4.5,3.5,4.5,3.5,Yes,Scott,Fries are good. Too little meat,,,X,,X,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 83 | Sotos Mexican Food,Pastor,5/4/2016,,,,,,,5.99,2,,,21,22,0.81,4,2,2.5,4,4,3,3.5,4,5,3.2,No,Emily,Free lime. Ingredients chopped finely,,,,,X,,,,X,,,,,,,,,,,,,X,X,,,,,,,,,,,,,, 84 | Taco stand,California,5/6/2016,,,,,,,7.49,3.5,,,19,22,0.73,3.5,4,4,4,3.5,3,4,4.5,3,4.2,Yes,Scott,Less meat than usual,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 85 | Taco stand,California,5/6/2016,,,,,,,7.49,4,,,16.5,25,0.82,4,3.5,4,4,4.5,5,4.5,5,4.5,4.5,Yes,Ricardo,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 86 | Taco stand,California,5/6/2016,,,,,,,7.49,4,,,17,25.5,0.88,3,3,4,3.5,3.5,4,3.5,4,2.5,3.7,Yes,Luis,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 87 | Taco stand,California,5/6/2016,,,,,,,7.49,3,,,17.7,21.5,0.65,4,2,5,5,1,3,5,4,3,4,Yes,Elynn,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 88 | Taco stand,California,5/6/2016,,,,,,,7.49,1,,,20,23.5,0.88,4,3,4,4.5,5,4.5,3,4.5,4,4,Yes,Sandra,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 89 | Taco stand,Carne asada,5/6/2016,,,,,,,7.89,4,,,18,25,0.9,4,2,4,3,4,4,4,3.5,4,3.5,Yes,Brent,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 90 | Taco stand,Shrimp,5/6/2016,,,,,,,8.95,5,,,17,22,0.65,4,4,5,5,5,4,5,5,5,5,Yes,Sankeerth,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 91 | Vallarta express,California,5/9/2016,,,,,,,6.95,4,,,21,23,0.88,3,3.5,2,3.5,3,2.5,2.5,2.5,2,2.9,No,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 92 | Lolita's taco shop,California,5/12/2016,,,,,,,7,3.5,,,17.5,24.5,0.84,3,5,3,3.5,3,1.5,3,3,4,3.3,No,Scott,,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 93 | Lolita's taco shop,2 in 1,5/12/2016,,,,,,,8.75,3,,,19,21.5,0.7,3,4,2.7,4.7,3,2.4,2,3.7,4.5,3.7,Yes,Bankole,,,,x,,x,x,,,,,,,,,,,,,,,,,,x,,,,,,,,,,,,, 94 | Lolita's taco shop,2 in 1,5/12/2016,,,,,,,8.75,4,,,17.78,22.225,0.7,4.5,3.8,3.8,4.5,3.4,1.5,3,3.8,4,3.8,Yes,Katie,,,,x,,x,x,,,,,,,,,,,,,,,,,,x,,,,,,,,,,,,, 95 | Rigoberto's Taco Shop,El Rusio,5/13/2016,,,,,,,6.65,4,,,21.5,23,0.91,3,4.5,2.5,2,3.5,5,1.5,2,1.5,2.5,No,Scott,Fries are terrible. Burrito leaked,,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 96 | Rigoberto's Taco Shop,Carne asada,5/13/2016,,,,,,,6.6,4,,,22,22,0.85,4,3.5,4,4,3.5,4,4,4.5,4.5,4,Yes,Ricardo,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 97 | Rigoberto's Taco Shop,Carne asada,5/13/2016,,,,,,,6.6,4.5,,,23,22,0.89,4,3,3,3,3.5,3,,3.5,4.5,3,Yes,Erin,Meat was too salty,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 98 | Rigoberto's Taco Shop,Carnitas,5/13/2016,,,,,,,7.5,4,,,23.5,22.5,0.95,4,5,4,5,5,4,5,4,4,4,Yes,Elynn,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 99 | Rigoberto's Taco Shop,Bacon breakfast,5/13/2016,,,,,,,6.25,3.5,,,22,22,0.85,4,3.5,4,4,5,5,,5,4.5,4.2,Yes,Luis,,,,,,,x,x,,,,,,,,,,,,,,,,,,,,,,,,x,,x,,,, 100 | Rigoberto's Taco Shop,Chile Relleno,5/13/2016,,,,,,,6.6,5,,,23,24,1.05,5,4,,5,5,4,,5,3,4.5,Yes,Matteo,,x,,,,,x,,x,,,,,,,x,,,,,x,,,,,,,x,,,,,,,,,, 101 | Rigoberto's Taco Shop,Fish,5/13/2016,,,,,,,6,2,,,23,23.5,1.01,5,4.5,5,5,5,5,,5,4,5,Yes,Aga,,x,,,,,,,,,,,x,,,x,x,,,,,,x,x,,,,,,,,,,,,,, 102 | Karina's Taco Shop ,Bomb,5/15/2016,Encinitas ,916 N Coast Hwy 101,https://www.yelp.com/biz/karinas-taco-shop-encinitas,4,4.2,,7.99,3,,,25.5,23,1.07,4,4,4,3.5,2.5,3.5,4,3.5,2.5,3.7,Yes,Scott,,,,X,,X,X,X,X,,,,,,,,,,,,,,,,X,,,,,,,,,,,,, 103 | Karina's Taco Shop ,California ,5/15/2016,,,,,,,6.99,2.5,,,21.5,22.125,0.84,3.5,4,3.5,3.5,3,1,4,4,4.5,3.8,Yes,Emily,,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 104 | Juanita's Taco Shop,California ,5/18/2016,Encinitas ,290 N Coast Hwy 101,https://www.yelp.com/biz/juanitas-taco-shop-encinitas,4,4.5,,5.55,3.5,,,17.5,23,0.74,4,4.5,3,3,5,3,4,3,5,3.5,Yes,Scott,,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 105 | Juanita's Taco Shop,Arizona,5/18/2016,,,,,,,5.55,2.5,,,20.5,22.5,0.83,4.5,4,3.5,4,3.5,4,3,4,5,3.9,Yes,Emily,,,,X,X,X,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 106 | Goody's,Custom,5/20/2016,La Jolla,Marshall College,https://www.yelp.com/biz/goodys-place-and-market-la-jolla,3.5,4.1,,7.25,3.5,,,18.5,22.5,0.75,1.5,1,2,2,2,2,2,2,1,1.8,No,Scott,Grocery store tortilla; cold guac,,,x,x,x,x,,,,,,,x,x,,,,,,,x,,,,,,,,,,,,,,,, 107 | Pedro's Tacos,California Burrito,5/22/2016,Oceanside,,,,,,6.5,5,,,,,,3,,4,5,4,4,,5,5,5,Yes,Erika N,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 108 | Los Primos Mexican Food,619 Burrito Original,5/16/2016,,,,,,x,11.75,4,,,,,,3,,4,5,4,4,5,4,3,4,Yes,Sai G,,x,,x,,,,x,,,,,,,,,,,,,x,,,,,,,,,,,,,,,,, 109 | Kotija Jr.,Fish,5/20/2016,,,,,,,6.5,4,,,,,,3,,4,4,5,4,4,5,4,5,Yes,Jonathan G,Great fish burrito. Not fishy and has great crunch from both cabbage and fried fish. Super generous with amount of fish given,x,,,,,,,,,,,x,,,,,,,x,x,,,,,,,,,,,,,,,,, 110 | La Perla Cocina,California,5/16/2016,,,,,,,6.5,5,,,,,,4,,4,4,5,4,4,4,5,4,Yes,Laya,A LOT of carne asada!,x,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 111 | Goody's,Custom,5/16/2011,La Jolla,,,,,,8,4,,,,,,3,,2,3,2,3,2,3,2,2,No,Albert N,"The price has gone up for the past two years. I would probably rate this lower because of it, but my scores were on raw taste only.",x,,x,x,x,,,x,,,,,,,x,,,,,,,,,,,,,,,,,,,,,, 112 | Goody's,Custom,5/20/2016,La Jolla,,,,,,8,3,,,,,,3,,1,2,2,2,2,2,1,2,No,Brittany T,It's gone downhill since 2013. Expensive and only ate it because there's nothing else around. closes early. skimping on the portions.,x,,,,,x,,x,,x,,,,x,x,,,,,,x,,,,,,,,,,,,,,,, 113 | Chipotle,Custom,5/22/2016,,,,,,,7,3.5,,,,,,3,,5,3,3,4,4,4,4,4,Yes,Gurkirat S,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 114 | Rigoberto's Taco Shop,Al pastor,4/20/2015,,,,,,,,4,,,,,,5,,5,5,5,4,5,5,5,4.8,Yes,Erica,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 115 | Taco Surf PB,California,5/23/2016,Pacific Beach,4657 Mission Blvd,https://www.yelp.com/biz/taco-surf-taco-shop-san-diego,4,4.6,,7.14,3.5,,,20,23,0.84,4,2,4,5,4,2,4,4.5,5,4.4,Yes,Scott,not too much rice,,,x,,x,x,x,x,,,,,x,,,,,,,,,,,,,,,,,,,,,,,, 116 | Taco Surf PB,California,5/23/2016,,,,,,,7.14,5,,,20.5,24,0.94,4,2,4.5,4,3.5,2,3,4,4,4.1,Yes,Sage,hashbrowns instead of fries; anterior-posterior uniformity is good but medial-lateral is bad,,,x,,x,x,x,x,,,,,x,,,,,,,,,,,,,,,,,,,,,,,, 117 | Taco Surf PB,Carne asada,5/23/2016,,,,,,,6.02,3.2,,,19.5,20.5,0.65,4.5,2,3.3,3.4,4.5,4.5,3.8,3.7,5,3.7,Yes,Dan,one hot side and one cold side from the guac,,,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 118 | Roberto's Very Mexican Food,Chicken asada,5/24/2016,Del Mar,2206 Carmel Valley Road,https://www.yelp.com/biz/robertos-very-mexican-food-del-mar-2,3.5,3.9,,6.5,2,,,18.5,21.5,0.68,1.5,4,2,2,4.5,1,1,2,5,1.5,No,Scott,,,,,x,x,,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,, 119 | Roberto's Very Mexican Food,Carnitas,5/24/2016,,,,,,,5.4,3,,,18,20,0.57,2,3.5,4,2.5,3.5,1.5,1.5,3,5,2.7,No,Emily,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 120 | Netos Mexican Food,California ,5/26/2016,San Marcos,325 S Rancho Santa Fe Rd,https://www.yelp.com/biz/netos-mexican-food-san-marcos,4.5,4.1,x,5.99,4,,,20.5,23.5,0.9,4.5,5,3,4,2,2,2,3.75,4,3.2,Yes,Scott,not 100% certain about the ingredients (was there guac and pico?),,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 121 | Netos Mexican Food,Carne adobada ,5/26/2016,,,,,,,5.5,3,,,20.75,23.5,0.91,3.5,4,3.5,3,3.5,3.5,2.5,3,2.5,3,Yes,Emily,"Best free chips, novel burrito",,,x,x,x,,,,,,,,,,,,,,,,,,,,x,,,,,,,,,,,, 122 | Lolita's Taco shop,Carne asada,5/27/2016,,,,,,,6.25,4,,,15,20.5,0.5,1.5,2.5,3,4.5,4,2,2.75,3.75,3,2.6,No,Scott,Way too small,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 123 | Lolita's Taco shop,Shrimp,5/27/2016,,,,,,,8.95,3.5,,,18.5,25,0.92,3,3,4,4,3.5,3.5,2.5,4,0.5,3,Yes,Emily,,,,,X,,,,,,,X,,,,X,,,,,X,,,,,,,,,,,,,,,,, 124 | Lolita's Taco shop,Bean and cheese,5/27/2016,,,,,,,3.5,1,,,16,20,0.51,3.5,4.5,,3,,4,3,2.5,4,2.7,No,Scott,,,,,,,x,,,,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 125 | Pokirrito,Pokirrito classic ,5/29/2016,Kearny Mesa,4646 Convoy St,https://www.yelp.com/biz/pokirrito-san-diego-2,4,4.3,x,11.95,4,,,18,23.5,0.79,3.5,4,4,4.5,2.5,2.5,3,4,2,4.2,Yes,Scott,Lotus chips add good crunch,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,x,,, 126 | Pokirrito,Mauna Lani,5/29/2016,,,,,,,11.95,3,,,20,22.75,0.82,3,4,4,4,3,2.5,4.5,4,1.5,4,Yes,Emily,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,x,,, 127 | Los Primos Mexican Food,California,5/29/2016,,,,,,,7.5,4,,,,,,3,5,3.5,3.5,4,4,2.5,3,5,3.5,Yes,Sage,,,,,x,,x,x,,,x,,,,,,x,,,,,,,,,,,,,,,,,,,,, 128 | El Nopalito ,Especial ,6/1/2016,Encinitas,582 Santa Fe Dr,https://www.yelp.com/biz/el-nopalito-encinitas,4,4,x,4.87,2,,,19,23.5,0.83,3,4,1.5,2,3,5,3,2.5,5,2.6,No,Scott,"It's pretty good for what it is, but just not the best ingredients for a burrito. also Few white people",,,X,,X,X,,,,,,,X,X,X,X,,,,,,,,,,,,,,,,,,,,, 129 | El Nopalito ,Ranchero steak,6/1/2016,,,,,,,4.87,2.5,,,19.5,20.5,0.65,3.5,3,2.5,2.4,3.5,4.5,3,3,1.5,2.6,No,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 130 | Goody's,Carne Asada,5/21/2016,,,,,,,6.25,4.5,,,,,,3.5,3,2,2,2.5,3,2,1.5,1,2,No,Kevin,"Sucks, but it is okay.",x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 131 | Saguaro's ,Vegetarian,6/20/2016,,,,,,,5.25,4,,,,,,4,5,,5,4,4,5,5,5,4.8,Yes,Brian,"Great rice and beans burrito, doesn't come with cheese or sour cream. ",x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 132 | Colima's ,Colimas burrito,5/31/2016,,,,,,x,8.25,4,,,,,,5,5,5,5,5,5,,5,4.5,4.9,Yes,Brian,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 133 | "Alberto's 623 N Escondido Blvd, Escondido, CA 92025",Carne Asada,5/5/2016,,,,,,,4.59,4,,,17,21,0.6,4,4,5,5,5,5,5,5,4,4.8,Yes,Chuck K,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 134 | MXN on Washington,Bean and rice grande size,5/20/2016,,,,,,,2.99,3,,,,,,4.5,3.5,,4.5,,3.5,3,4,4,4.5,Yes,Sarah,Got green and hot salsa put inside the burrito-drive thru,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 135 | El Zarape,Surf and Turf,5/19/2016,,,,,,,7,2.5,,,,,,5,5,5,5,5,5,5,5,5,5,Yes,Damien B,Get the green sauce,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 136 | Lolita's,Bean and Cheese,5/19/2016,,,,,,,,4.3,,,,,,3.8,4,,4.7,,5,,4.7,5,4.8,Yes,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 137 | Humbertos,Pollo california,5/27/2016,,,,,,,6,5,,,,,,4,5,5,5,5,4,5,5,5,5,Yes,Logan,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 138 | Chili Peppers,Surf & Turf,5/28/2016,,,,,,,9.43,,,,,,,4,5,5,5,5,5,5,5,5,5,Yes,Chris H,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 139 | Los Primos Mexican Food,Monster California,6/3/2016,,,,,,,9.25,3.5,,,25.5,24,1.17,2,1,3,3,1,,3,2,4,2.3,No,Scott,,,,X,X,X,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 140 | Los Primos Mexican Food,California,6/3/2016,,,,,,,7,3,,,20,22,0.77,4.5,4,3.5,4,1,1,2,2,4,2.5,No,Ricardo,,,,X,X,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 141 | Los Primos Mexican Food,California breakfast,6/3/2016,,,,,,,6.25,2.5,,,18.5,22.5,0.75,3,4,3,2,1.5,1,3,1.5,3,2,No,Erin,,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,x,,,,,, 142 | Los Primos Mexican Food,Baja monster,6/3/2016,,,,,,,6,4,,,,,,3,3,1,4,2,2,3,2,1,2,No,Elynn,,,,,x,x,,,,x,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 143 | Los Primos Mexican Food,Baja monster,6/3/2016,,,,,,,6,3,,,,,,4,3.5,4,4,2,4,4,4,3,3.8,Yes,Rob,,,,,x,x,,,,x,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 144 | Los Primos Mexican Food,Carnitas,6/3/2016,,,,,,,6.35,4.5,,,18,20.5,0.6,4,4,2.5,2,3,2,2,2,3,2,No,Matteo,,,,,,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 145 | Los tacos ,Local,6/5/2016,Oceanside,2183 Vista Way,https://www.yelp.com/biz/los-tacos-oceanside,4,4.2,,7.9,3.5,,,20.5,21.5,0.75,3.5,4.5,4.5,4,1.5,1.5,3,4,5,3.5,Yes,Scott,,,,,X,,X,X,,X,,,,,,,,,,,,,,,,X,,,,,,,,,,,, 146 | Los tacos ,Fusion,6/5/2016,,,,,,,8.5,3.5,,,18.5,21,0.65,4,4,4,3.5,4,4,4,4.5,4.5,4.2,Yes,Emily,,,,X,,X,X,,,X,,,,,,,,,,,,,X,X,,,,,,,,,,,,,, 147 | Taco Stand,Al pastor,6/6/2016,,,,,,,6.99,3.5,,,18.5,21,0.65,4,3.5,4,3.5,4,5,2.5,4,4.5,3.9,Yes,Scott,,,,,,,,,,x,,,,,,,,,,,x,,x,x,,x,,,,,,,,,,,, 148 | Taco Stand,Al pastor,6/6/2016,,,,,,,6.99,5,,,,,,4,4,4,4,2,3,3,4,3,3.5,Yes,Brad P,,,,,,,,,,x,,,,,,,,,,,x,,x,x,,x,,,,,,,,,,,, 149 | Albertacos,California ,6/8/2016,San Marcos,500 W San Marcos Blvd # 103,https://www.yelp.com/biz/albertacos-san-marcos,3.5,3.9,,5.7,3.5,,,20.5,21.5,0.75,3.5,3,3,4,1.5,4,4,4,4,3.7,Yes,Scott,,,,X,X,X,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 150 | Albertacos,Carne asada,6/8/2016,,,,,,,5.25,4,,,21,21,0.74,3.5,3,2.8,3.5,4,4,4,3.5,5,3.2,Yes,Emily,,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 151 | El Rey Moro,California Surf,6/9/2016,Clairemont,4471 Clairemont Mesa Blvd,https://www.yelp.com/biz/el-rey-moro-taco-shop-san-diego,4,3.8,,9.19,2.8,,,20.5,23.5,0.9,3.5,4.5,4,3.5,5,4.5,3,3.5,5,4,Yes,Scott,shrimp is really good. too much chipotle sauce,,,X,,X,X,X,,,,X,,,,,,,,,X,,,,,,,,,,,,,,,,, 152 | Tacos por favor,Carne asada,6/11/2016,Santa Monica,1408 Olympic Blvd,https://www.yelp.com/biz/el-dorado-mexican-food-temecula,4,4.1,x,7.85,3,,,16.5,20.5,0.55,3,4.5,4.5,3.5,3.5,3.5,1,4,1,3.5,Yes,Scott,,,x,X,X,X,,,,,,,,X,X,,,,,,,,,,,,,,,,,,,,,,, 153 | Tacos por favor,Al pastor,6/11/2016,,,,,,,6.85,4,,,15.5,21,0.54,3,5,4,3,5,4,3,4,3,4,Yes,Christian,,,x,,X,,,,,x,,,,X,X,,,,,,,,,,,,,,,,,,,,,,, 154 | Tacos por favor,Carne asada,6/11/2016,,,,,,,6.85,4,,,18,,,4,5,3.5,3,4,4,3,3,3,3.5,,Sam H,,,x,X,X,,,,,,,,,X,X,,,,,,,,,,,,,,,,,,,,,,, 155 | El Dorado Mexican Food,California,6/16/2016,Temecula,29000 Old Town Front St,https://www.yelp.com/biz/el-dorado-mexican-food-temecula,4.5,4,,6.94,4,,,,,,4,4,4,4.5,3.2,3,4.5,4.5,2,4.5,Yes,Scott,Salsa verde has an interesting hint of garlic,,,X,,X,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 156 | El Dorado Mexican Food,Super,6/16/2016,,,,,,,6.94,3.75,,,,,,3.5,3.5,3.5,3.5,4,4,4.5,3.5,4.5,3.8,Yes,Emily,,,,X,,X,X,,X,,,,,,,,,,,,,X,,,,,,,,,,,,,,,, 157 | Lolita's Taco Shop,California,6/23/2016,,,,,,,7,2.2,,,18,25,0.9,2.8,3,3,2,2,4.5,2,1.5,4.5,2.3,No,Scott,,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 158 | Lolita's Taco Shop,California,6/23/2016,,,,,,,7,3.5,,,18,23.5,0.79,4,4,4,3,4,5,4,4,5,4,Yes,Cris,,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 159 | Lolita's Taco Shop,California,6/23/2016,,,,,,,7,3,,,19,24,0.87,3.5,2,3,4,2,4,3,3,4,3,,Matt,,,,x,,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 160 | Lolita's Taco Shop,Mixed,6/23/2016,,,,,,,8.25,4,,,,,,4,3,4,4,4,5,3,4,5,3.5,Yes,Marc,,,,x,,x,x,,,,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 161 | California Burritos,California Everything,6/24/2016,,,,,,,6.25,3,,,23.5,21.5,0.86,3.8,1.3,3.5,3.5,4.5,4.5,3.5,4,5,3.9,Yes,Scott,Temperature brought it down,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 162 | California Burritos,California Everything,6/24/2016,,,,,,,6.25,4.5,,,22.5,22,0.87,4,4,4.5,4,4,3.5,4,4,4.5,4.25,Yes,Ricardo,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 163 | California Burritos,California Everything,6/24/2016,,,,,,,6.25,4,,,22.5,22,0.87,3,2.5,4,4,4,2,2,3,4,4,Yes,Elynn,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 164 | California Burritos,California Everything,6/24/2016,,,,,,,6.25,3,,,23,22.5,0.93,5,4,4,4.5,4,4.5,,4,4,4.5,Yes,Erin,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 165 | California Burritos,California Everything,6/24/2016,,,,,,,6.25,4,,,,,,4,3.5,4.5,4,4.5,4,4.5,4.5,5,4.5,Yes,Luis,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 166 | California Burritos,Carnitas,6/24/2016,,,,,,,5.5,4.5,,,21.5,20,0.68,5,4,5,4,4.5,4,4,4.5,4,4.5,Yes,Matteo,,,,,,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 167 | California Burritos,Carne asada everything,6/24/2016,,,,,,,6.25,3,,,23,23,0.97,4,3,4,3,4,3,3,4,4,4,Yes,Brent,,,,x,x,x,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 168 | California Burritos,Carne asada everything,6/24/2016,,,,,,,6.25,4.5,,,21.5,20.5,0.72,4,5,4.5,4,4.5,4,3,4,5,4.5,Yes,Daniel,,,,x,x,x,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 169 | California Burritos,Carne asada everything,6/24/2016,,,,,,,6.25,5,,,23,21.5,0.85,4,3,5,4,4,4,5,5,3,4.2,Yes,Alejandro,,,,x,x,x,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 170 | California Burritos,California Everything,8/1/2016,,,,,,,6.25,4,,,22,20.8,0.76,4,4,3.5,4,3,4,4,3.5,4.5,3.75,Yes,Ricardo,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 171 | California Burritos,California Everything,8/1/2016,,,,,,,6.25,4,,,22.5,21.5,0.83,3,2,4,5,4,4,3,4,3,4,Yes,Elynn,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 172 | California Burritos,California Everything,8/1/2016,,,,,,,6.25,4,,,23,21.5,0.85,4,3.5,3.5,4,3.5,4,3.5,4,4.5,4,Yes,Matteo,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 173 | California Burritos,California Everything,8/1/2016,,,,,,,6.25,3.5,,,21,22.5,0.85,3.5,2,3,3.5,3.5,2.5,2.5,3.5,4.5,3.4,Yes,Scott,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 174 | California Burritos,California Everything,8/1/2016,,,,,,,6.25,3,,,22.5,21,0.79,4,4,4.5,5,4.75,5,4,4.5,4.5,,Yes,Aga,,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 175 | California Burritos,Surf & Turf,8/1/2016,,,,,,,7,4.31,,,,,,3,2.5,3.5,3,3.5,4,3,3,4,,Yes,Hannah,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 176 | California Burritos,Carne asada everything,8/1/2016,,,,,,,6.25,4.5,,,22,20,0.7,4.5,4,4,4.5,4,4,4.5,4.5,4,4,Yes,Brent,,,,x,x,x,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 177 | Los Primos Mexican Food,Surf & Turf,8/6/2016,,,,,,,7,2.5,,,20.5,21.75,0.77,4,4,2,3,2,3.5,3,3,4.5,2.5,No,Emily,,,,X,,,X,,,,,,,,,,,X,,,,,,X,,,,,,,,,,,,,, 178 | Los Primos Mexican Food,Adobada,8/6/2016,,,,,,,6.25,2,,,20.5,20,0.65,4,2.5,2.5,3,2,4,3.5,3,4.5,2.6,No,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 179 | Los Primos Mexican Food,Carne asada,8/6/2016,,,,,,,7,4,,,18.5,20.5,0.62,3.5,3,2,2,1,3,3.5,1.5,4,2,No,Ricardo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 180 | Papa Chito's Mexican Food,California,8/9/2016,University City,3951 Governor Dr,https://www.yelp.com/biz/papa-chitos-mexican-food-san-diego,2.5,3.3,,6.25,3.5,,,21.5,20,0.68,3.5,3.5,2.5,2.5,2.5,4,2,1.5,5,2.2,No,Scott,,,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 181 | Papa Chito's Mexican Food,California,8/9/2016,,,,,,,6.25,4,,,20,20,0.64,4,5,3,3,4,3.5,4,4,5,3.75,Yes,Sage,,,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 182 | El Pueblo Mexican Food,California,8/10/2016,Cardiff ,820 Birmingham Dr,https://www.yelp.com/biz/el-pueblo-authentic-mexican-food-cardiff-by-the-sea,4,4.7,,4.99,4,,,19,21,0.67,4.5,4.5,3.5,4,4.5,5,2.5,4.5,5,4.3,Yes,Scott,,,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 183 | Burros and Fries,California,8/12/2016,Clairemont,4705 Clairemont Dr,http://www.burrosandfries.com/,3.5,4.1,,6.89,4,,,21.5,22.5,0.87,3.5,4.5,3.5,3.5,3,1.5,2.5,3.5,5,3.5,Yes,Scott,good fries,,,x,x,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 184 | Burros and Fries,Carne asada,8/12/2016,,,,,,,6.89,5,,,18.5,21,0.65,3,5,4.5,4.5,3,4,4.5,4,4.5,4,Yes,Brent,very little guac,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 185 | King Burrito,Adobada,8/16/2016,Oceanside,3490 Marron Rd,https://www.yelp.com/biz/king-burrito-oceanside-2,4,3.9,,4.99,3.5,,,23,19,0.66,3,3,3,3,2.5,2,2.5,3,4,2.8,No,Emily,Too much tortilla per bite,,,,X,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 186 | King Burrito,California,8/16/2016,,,,,,,5.29,3.5,,,22.5,20.5,0.75,2.5,4.5,2,3,2.5,1.5,3,2,4.5,2.5,No,Scott,it does taste homemade. but that's not a good thing,,,x,x,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 187 | Taco Stand,California ,8/17/2016,,,,,,,7.49,2,,,18.5,21.5,0.68,4,5,4.5,3.5,3.5,2,3.5,4,5,4,Yes,Scott,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 188 | Taco Stand,California ,8/17/2016,,,,,,,7.49,2.5,,,16.5,23.5,0.73,3.5,5,4,3,4,4.5,3,3.5,5,4,Yes,TJ,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 189 | Carmen's Mexican Food,Adobada,8/19/2016,Clairemont,4937 Diane Ave,https://www.yelp.com/biz/carmens-authentic-mexican-food-san-diego,4,4.2,,6.5,3.5,,,20.5,20.5,0.69,2.5,4,3.5,4,4,3,1.5,3.5,5,3.6,Yes,Scott,really good guac,,,,,x,,,,x,,,,,x,,,,,,,,x,x,,,,,,,,,,,,,, 190 | Carmen's Mexican Food,Carne asada,8/19/2016,,,,,,,6.5,5,,,21,21,0.74,4.5,4.5,3.5,4,4,3.5,4,4,4,4,Yes,Brent,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 191 | Senor Panchos,Pollo asado,8/21/2016,San Marcos,1909 W San Marcos Blvd,https://www.yelp.com/biz/senor-panchos-mexican-restaurant-san-marcos,4,4.2,,6.25,3.5,,,21.5,19.5,0.65,2.5,3.5,3,3,5,4.5,3.5,2,5,2.9,No,Scott,"guac is good, very avocado-y",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 192 | Senor Panchos,California,8/21/2016,,,,,,,6.25,3,,,21,19.5,0.64,3,4,4,3,3.5,4.5,4,4,5,4,Yes,Emily,feels very dense; a lot of meat,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 193 | Los Cabos,California,8/27/2016,San Marcos,165 S Rancho Santa Fe Rd,https://www.yelp.com/biz/los-cabos-san-marcos,4,4.1,x,5.99,4,,,18.5,21,0.65,4,4.5,2.5,2.5,2.5,1.5,3,4,5,3,No,Scott,Repeatedly get large bites of sour cream,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 194 | Los Cabos,Al pastor,8/27/2016,,,,,,,5.69,3,,,17.5,23.5,0.77,4,4.5,3,3.5,4,3.5,2.5,4,4.5,4,Yes,Emily,Really good with lime,,,,,X,,,,X,,,,,,,,,,,,,X,X,,,,,,,,,,,,,, 195 | Rubios UCSD,Tilapia one,8/30/2016,UTC,9500 Gilman Dr,https://www.yelp.com/biz/rubios-la-jolla-4,3.5,3.4,x,7.99,3.5,,,17,20,0.54,1.5,4,3,3,1.5,4.5,2.5,3,1.5,3.2,No,Scott,,,,,,X,,,,,,,X,X,,,,,,X,,,,,,,,,,,,,,,,,x, 196 | Lucha Libre North Park,Surf & Turf,8/30/2016,North Park,3016 University Ave,https://www.yelp.com/biz/lucha-libre-san-diego,3.5,4.3,x,8.25,4,,,19,22.5,0.77,3,2.5,3,3,3,3,3.5,3,3,3,Yes,Hannah,,,,x,x,,,,,,,x,,x,,,,,,,x,,,,,,,,,,,,,,,x,, 197 | Lucha Libre North Park,Surf & Turf,8/30/2016,,,,,,,8.25,3,,,19,24,0.87,5,3,5,4,2,2,5,2,2,2,No,Tammy,,,,x,x,,,,,,,x,,x,,,,,,,x,,,,,,,,,,,,,,,x,, 198 | Lucha Libre North Park,Surf & Turf,8/30/2016,,,,,,,8.25,3.9,,,,,,2.1,1.9,2.6,2.4,2.9,3.2,4,2.5,3,2.4,No,Bankole,Not as good as the first time,,,x,x,,,,,,,x,,x,,,,,,,x,,,,,,,,,,,,,,,x,, 199 | Lucha Libre North Park,Surf & Turf,8/30/2016,,,,,,,8.25,4,,,20,22,0.77,3,2.5,2,2.8,3.5,3.5,4,3,4,2.2,,Melissa N,,,,x,x,,,,,,,x,,x,,,,,,,x,,,,,,,,,,,,,,,x,, 200 | Lucha Libre North Park,Surf & Turf,8/30/2016,,,,,,,8.25,3.5,,,20,22,0.77,3.6,3.2,3.2,3.5,3.6,3.5,,3.8,3.9,3.6,,Katie,,,,x,x,,,,,,,x,,x,,,,,,,x,,,,,,,,,,,,,,,x,, 201 | Lucha Libre North Park,Surfin California,8/30/2016,,,,,,,8.25,3,,,21,24.5,1,3,3,4,3.5,3,2,3.5,3.5,4,3.9,Yes,Emily,thick chips,,,x,x,,x,x,,,,x,,,,,,,,,x,,,,,,,,,,,,,,,x,, 202 | Lucha Libre North Park,Surfin California,8/30/2016,,,,,,,8.25,4,,,18.5,25.5,0.96,3.5,2,4,3,5,5,4,4,5,3.5,,Melissa G,Good guac,,,x,x,,x,x,,,,x,,,,,,,,,x,,,,,,,,,,,,,,,x,, 203 | Lucha Libre North Park,Surfin California,8/30/2016,,,,,,,8.25,4,,,,,,4,3,3,3,3,2,3,3,4,3,Yes,Marc,"shrimp was questionable; salsa was mediocre to bad; overall ok, better than past burritos at lucha libre",,,x,x,,x,x,,,,x,,,,,,,,,x,,,,,,,,,,,,,,,x,, 204 | Lucha Libre North Park,Surfin California,8/30/2016,,,,,,,8.25,1,,,,,,3,2,4,3,5,5,4,3.5,5,3.5,,Ashley G,good guac but fries could be better,,,x,x,,x,x,,,,x,,,,,,,,,x,,,,,,,,,,,,,,,x,, 205 | Lucha Libre North Park,Surfin California,8/30/2016,,,,,,,8.25,2,,,20,24.5,0.96,3.5,2,5,3.5,4,2.5,3.5,3,3.5,3.5,Yes,Richard,probably positively biased by service,,,x,x,,x,x,,,,x,,,,,,,,,x,,,,,,,,,,,,,,,x,, 206 | Lucha Libre North Park,Surfin California,8/30/2016,,,,,,,8.25,3,,,19,24,0.87,5,4,4,4,3,3,4,4,4,4,Yes,Mike,,,,x,x,,x,x,,,,x,,,,,,,,,x,,,,,,,,,,,,,,,x,, 207 | Lucha Libre North Park,Surfin California,8/30/2016,,,,,,,8.25,1,,,19.5,25.5,1.01,4,3,3.5,3,5,4,2,3,4,3,,Sankha G,,,,x,x,,x,x,,,,x,,,,,,,,,x,,,,,,,,,,,,,,,x,, 208 | Lucha Libre North Park,Nutty,8/30/2016,,,,,,,7.5,3.8,,,19,25,0.94,3.8,4,4,4,4,4,4.5,4.5,4.5,4.4,,Luis,,,,,,,x,x,x,,x,,,x,,,,,,,x,,,,,,,,,,,,,,,,, 209 | Lucha Libre North Park,Veg Out,8/30/2016,,,,,,,6.95,3,,,19,23,0.8,5,5,,5,,5,4.5,5,3,4.5,Yes,Aga,,,,,,,,,,,,,,,x,x,,x,,,x,,,,,,,,,,,,x,,,x,,x 210 | Lucha Libre North Park,Veggie,8/30/2016,,,,,,,5.25,3,,,19.5,25.5,1.01,4.5,4.5,,3.5,,3,4,3.5,5,3.25,Yes,Rob G,,,,,x,,,x,,,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,, 211 | Lucha Libre North Park,Bean and cheese,8/30/2016,,,,,,,3.75,5,,,18,22,0.69,4,3,,1,,3,3,2,3,2,No,Meghan,Bland,,,,,,x,,,,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 212 | Lucha Libre North Park,California - Steak,8/30/2016,,,,,,,7.5,2.5,,,19,23.5,0.83,3,3,5,3.5,3,3.5,4.5,4,4.5,3.9,Yes,Scott,"first bite sour cream, but probably the best steak I've had in a burrito",,,x,x,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 213 | Lucha Libre North Park,California - Steak,8/30/2016,,,,,,,7.5,5,,,17,23,0.72,3.5,3,2,3,3,2,4,2.5,5,3.5,,Devleena,fries = 4,,,x,x,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 214 | Lucha Libre North Park,California - Pork Adobada,8/30/2016,,,,,,,7.5,4,,,18,24.5,0.86,2,3,3,3,4,3,4,3,5,3,Yes,Erik,,,,,x,,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 215 | Lucha Libre North Park,California - Pork Adobada,8/30/2016,,,,,,,7.5,4.5,,,18,26,0.97,3.5,4,4.5,4,3.5,3.5,4,4,4.5,4.25,Yes,Ricardo,,,,,x,,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 216 | Lucha Libre North Park,California - Pork Adobada,8/30/2016,,,,,,,7.5,2,,,19,25,0.94,4,5,5,4,4.5,4.5,5,4.5,4,4.5,Yes,Erin,,,,,x,,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 217 | Lucha Libre North Park,California - Chicken,8/30/2016,,,,,,,7.5,4,,,20,23.5,0.88,3.5,2.5,3,4.5,3,2,5,4.5,3.5,2.5,Yes,Kelsey,,,,,x,x,x,x,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,, 218 | Lucha Libre North Park,California - Chicken,8/30/2016,,,,,,,7.5,3,,,20,22,0.77,3.5,5,3.5,4,3,3,4,2.5,5,3,No,Javier,"large, bt feels good in my hands",,,,x,,x,x,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,, 219 | Lucha Libre North Park,Holy Moly,8/30/2016,,,,,,,7.5,5,,,,,,3.5,2,3.5,3.5,3,4,2,2,4,3.5,,Sam A,,,,,,,x,,x,,x,,,x,,,,,,,x,,,,,,,,,,,,,,,,, 220 | Lucha Libre North Park,Holy Moly,8/30/2016,,,,,,,7.5,3,,,17,21,0.6,2.5,2.5,3,2,2,1,5,1,5,1.5,No,Sage,all meat at bottom 1/8th,,,,,,x,,x,,x,,,x,,,,,,,x,,,,,,,,,,,,,,,,, 221 | Lucha Libre North Park,Holy Moly,8/30/2016,,,,,,,7.5,4,,,17.5,21.2,0.63,5,3,5,5,3,2,2,3,5,4,Yes,Aaron S,,,,,,,x,,x,,x,,,x,,,,,,,x,,,,,,,,,,,,,,,,, 222 | Lucha Libre North Park,Holy Moly,8/30/2016,,,,,,,7.5,5,,,19,21,0.67,5,4,2,1,4,3,5,4,2,2,,Jaeyoung,Ordered a specialty burrito and guess I was expecting an ordinary one! Sauce was good but overpowering; no veggies at all; overall just did not feel like a burrito.,,,,,,x,,x,,x,,,x,,,,,,,x,,,,,,,,,,,,,,,,, 223 | Lucha Libre North Park,Holy Moly,8/30/2016,,,,,,,7.5,4.5,,,19.5,19,0.56,4,4,3.5,4.5,4,4,5,4.5,4,4,Yes,Matteo,,,,,,,x,,x,,x,,,x,,,,,,,x,,,,,,,,,,,,,,,,, 224 | Tacos La Bala,Pastor,9/5/2016,Houston,5800 Bellaire Blvd,tacoslabala.com,4.5,4.1,,4.99,3.5,,,,,,2.5,2.5,4,2.5,1,1,2,4,0,2.5,No,Scott,Everything is in spanish. Get a taco or sope,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 225 | Tacos La Bala,Barbacoa ,9/5/2016,,,,,,,4.99,2.5,,,16.5,22,0.64,2,2.5,3.5,2,3,2.5,2,2.5,2.5,2.4,No,Emily,"Burritos cut in half, felt like a wrap instead of a burrito",,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 226 | Cancun Mexican & Seafood,Adobada,9/9/2016,,,,,,,6.45,3,,,19.5,21.5,0.72,4,5,3.5,3,3.5,3.5,4,2.5,4,3.5,Yes,Scott,Free salad,,,,,X,,,,X,,,,,,,,,,,,,X,X,,,,,,,,,,,,,, 227 | Cancun Mexican & Seafood,California,9/9/2016,,,,,,,6.99,4,,,19.5,22,0.75,3,4.5,4,4,3.5,3,4,4,5,4,Yes,Emily,,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 228 | Roberto's Taco Shop Clairemont,California,9/11/2016,Clairemont,3095 Clairemont Dr,https://www.yelp.com/biz/robertos-taco-shop-clairemont-san-diego,4,4,,5.79,4,,,,,,3,4.5,4,4,4,5,2.5,3,5,3.6,Yes,Scott,Fries are really good but the overall flavor is plain because lack of ingredients,,,x,,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 229 | Roberto's Taco Shop Clairemont,California,9/11/2016,,,,,,,5.79,4,,,,,,4,3,4,2.5,3.5,4,2,2.5,5,3,No,Benni,,,,x,,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 230 | Roberto's Taco Shop Clairemont,California + Guac + sour cream,9/11/2016,,,,,,,7.29,3.7,,,,,,3.8,4.7,4,3.5,4.5,4,4,4.5,5,4,Yes,Luis,,,,x,,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 231 | Roberto's Taco Shop Clairemont,Carne asada,9/11/2016,,,,,,,5.69,3,,,,,,4,3,1.5,3,4,4.5,3.5,2,4.5,3,No,Ricardo,,,,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 232 | Chipotle,Carnitas,9/13/2016,Carlsbad,2505 Palomar airport Rd,https://www.yelp.com/biz/chipotle-mexican-grill-carlsbad,3,4.2,,7.15,4,,,16.5,26.5,0.92,2.5,2.5,3,2.8,2.5,3.5,,3,3.5,2.75,Yes,Emily,,,,,X,,,,X,X,,,,X,X,,,X,,,,,,,,,,,,,,,,,,,X, 233 | Taco Stand,Al Pastor,9/16/2016,,,,,,,6.99,4,,,,,,4.5,4,4.5,4.5,4.5,4.5,4.5,5,4,4.5,Yes,Mike,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 234 | Taco Stand,California,9/16/2016,,,,,,,7.49,4.1,,,,,,4,4.5,4.5,4.5,4.7,4.5,4.2,4.5,5,4.7,Yes,Luis,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 235 | Los Tacos,California ,9/18/2016,,,,,,,7.9,3.5,,,20.5,23,0.86,4,5,4,4,3,4,3.5,4,4,4.2,Yes,Scott,Tortilla is burnt a bit but good. Pick is good,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 236 | Los Tacos,Local,9/18/2016,,,,,,,7.9,3.5,,,22,23,0.93,4,3.5,4.5,4.5,3.5,3.5,3.5,4,3,4.3,Yes,Emily,Melted cheese is good. Cilantro is fresh,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 237 | El Cuervo,California ,9/22/2016,Hillcrest,110 Washington St,https://www.yelp.com/biz/el-cuervo-taco-shop-san-diego,4,4.3,,6.95,3.5,,,20,21.5,0.74,3.5,3.5,3,4,3,3,4.5,3.5,2,3.6,Yes,Scott,Alfajores dessert and horchata are super good,,,X,X,X,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 238 | El Cuervo,Pollo adobado,9/22/2016,,,,,,,5.95,4,,,20.5,20,0.65,3.5,5,4.5,3.5,4,4.5,4.5,4,5,4,Yes,Richard,First burrito I enjoyed from top to bottom,,,,,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 239 | El Torrito Foods,Asada,9/25/2016,Vista,249 Emerald Dr,https://www.yelp.com/biz/el-torito-foods-vista-2,4,4.4,,5.49,4,,,23.5,19,0.68,3,5,3,3,2.5,4,3.5,3,5,3.1,Yes,Scott,Good because so cheap,,,X,,,,,,,,,,X,X,,,,,,,,X,X,,,,,,,,,,,,,, 240 | El Torrito Foods,Adobada,9/25/2016,,,,,,,3.99,4.5,,,22.5,19.5,0.68,3.5,4,3,2.5,2.8,4,2.5,2.5,5,2.6,No,Emily,tamale isn't good,,,,,,,,,X,,,,X,X,,,,,,,,X,X,,,,,,,,,,,,,, 241 | La Morena Taco Shop and Seafood,California,9/22/2016,Webster,5059 Federal Blvd,https://www.yelp.com/biz/la-morena-taco-shop-san-diego,4.5,4.7,,6.35,4,,,,,,4,2.5,4,3,4.5,2,2,3,4,3,No,Erin,"Good tortilla, good amount of food, needed guac. or salsa to balance out density of fillings.",,,x,x,,,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 242 | Taco Villa,Carnitas,9/26/2016,UTC,9500 Gilman Dr,https://www.yelp.com/biz/taco-villa-san-diego,3.5,3.5,,5.99,2.5,,,18.5,20,0.59,3.2,3.8,4.5,2.8,4,2,1.8,3.5,5,4,Yes,Scott,Carnitas very good,,,,X,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 243 | Rigoberto's Taco Shop,Campeon,9/27/2016,,,,,,,7.65,4.5,,,26,24.5,1.24,3.5,4.5,2.5,2.5,1,1.5,3,2.5,3,2.7,No,Scott,"The big size was too big of an appeal, but there's just not enough meat",,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 244 | Rigoberto's Taco Shop,California,9/27/2016,,,,,,,6.6,3.5,,,22,23,0.93,4,4.5,4,4,4.5,5,4.5,4.5,4.5,4.25,Yes,Ricardo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 245 | Rigoberto's Taco Shop,Bacon breakfast,9/27/2016,,,,,,,6.3,4,,,22,22,0.85,4,3.6,4,4,4,4,,4,4,4.2,Yes,Luis,,,,,,,x,x,,,,,,,,,,,,,,,,,,,,,,,,x,,x,,,, 246 | Rigoberto's Taco Shop,Carnitas,9/27/2016,,,,,,,6.6,3,,,,,,4,4,5,5,4.5,3,2,4,4,4,Yes,Elynn,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 247 | Taco Villa,Al pastor,9/29/2016,,,,,,,5.99,4,,,18,20,0.57,3.5,3.5,2,3,4.5,4.5,3,3,5,3.2,No,Scott,get the carnitas,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 248 | Valentines Mexican Food,California ,10/1/2016,Downtown,1157 Sixth Ave,https://www.yelp.com/biz/valentines-mexican-food-san-diego-6,4,4,X,7.9,4,,,20,22,0.77,4,4,4,4,4.5,4,4,4,2.5,4.2,Yes,Scott,Best horchata. Fries are great. Chips are really good,,,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 249 | Valentines Mexican Food,California Chipotle,10/1/2016,,,,,,,7.9,3,,,18.5,22,0.71,4,4,3.5,4.5,4,3.5,2.5,4,1.5,4,Yes,Emily,"Chips really good, really good but a little bit spicy chipotle. Very good horchata",,,x,x,x,x,x,,,,,,,,,,,,,x,,,,,,,,,,,,,,,,, 250 | Matador Mexican Food,Carnitas,10/2/2016,Morena,5201 Linda Vista Rd,https://www.yelp.com/biz/matador-mexican-grill-san-diego-2,4.5,4,X,6.6,3.2,,,,,,1.4,3.7,3,3.2,4.8,2.4,3,2.9,3,3,No,Scott,,,,,X,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 251 | Matador Mexican Food,Carne asada,10/2/2016,,,,,,,6.6,4,,,,,,4,3.5,3.5,3.5,4,3,3.5,3.5,4.5,3,,Brent,Salsa too spicy,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 252 | Jose's Taco,California,10/5/2016,Oceanside,3910 Vista Way,https://www.yelp.com/biz/joses-taco-oceanside,4,3.8,,6.1,4,,,22,22,0.85,3.5,3.5,2,3.5,4.5,3.5,3,3.5,4,3.3,No,Scott ,,,,X,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 253 | Cortez Mexican Food,California ,10/7/2016,Bonsall,5517 Mission Rd,https://www.yelp.com/biz/cortez-mexican-food-bonsall,4.2,4,,6.25,4,,,22.5,18,0.58,3.5,4,2.5,3,1.5,2.5,2.5,2.8,5,3.2,No,Scott ,,,,X,X,X,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 254 | California Burrito Company,Dave's California,10/12/2016,Miramar,6912 Miramar Rd,https://www.yelp.com/biz/california-burrito-company-san-diego-2,3.5,4.4,,6.5,4,,,19.5,21,0.68,3,2.5,2.5,3,4,3.5,2.5,3,5,3.3,No,Scott,The burrito looked beautiful when it came out. Chicken didn't add anything. would probably get the regular,,,x,,,x,x,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,, 255 | California Burrito Company,California,10/12/2016,,,,,,,5.5,4,,,20,20,0.64,3.5,5,3,3,3.5,3.5,2,4,5,3.5,Yes,Devleena,,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 256 | California Burrito Company,California,10/12/2016,,,,,,,5.5,2,,,20,23,0.84,3,5,3,4,2,2,2,4.5,4,3.5,Yes,Sankha G,,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 257 | Taco Villa,Chicken and rice,10/12/2016,,,,,,,4.95,3,,,,,,3.5,5,4,4,3.78,5,,4.7,5,4.2,yes,Sage,chicken and rice burrito. simple and delicious. ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 258 | Taco Villa,California ,10/17/2016,,,,,,,6.99,3.5,,,19,20,0.6,3,3,3,3,3.7,3.5,3.8,3,5,3.5,Yes,Scott,Pretty decent,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 259 | Storehouse Kitchen ,Breakfast,10/17/2016,La Jolla village,,,,,,,3.5,,,,,,4,5,4.5,4.2,4.7,4.4,4,4.9,5,4.6,yes ,Sage,one if the best breakfast burritos I've ever had,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 260 | California Burrito Company,Fajitas ,10/18/2016,,,,,,,6.5,3,,,18.5,20.5,0.62,3,4.5,3.5,1.5,1.5,2,3.2,2,4.5,2.2,No,Scott,Peppers not cooked enough,,,X,,,X,,,,,,,,,,,X,,,,,,X,,,,,,,,,,,,,, 261 | California Burrito Company,California ,10/18/2016,,,,,,,5.5,3,,,17,22,0.65,3,4,4.5,3,2,4,4.5,3.5,4.5,3.5,No,Ricardo,Very plain burrito,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 262 | Taco Villa,Breakfast,10/18/2016,,,,,,,4.99,4,,,,,,4.5,5,3,3,3,2.5,0,2.5,5,3,yes,Sage,pretty standard breakfast burrito. eggs and cheese. great tortilla! morning protein!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 263 | California Burritos,California Everything,10/17/2016,,,,,,,6.95,4,,,22,23,0.93,4,2,4,3,4,5,3,3,4,4,yes,Elynn,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 264 | California Burritos,Surf & Turf,10/17/2016,,,,,,,7,4,,,22.5,21,0.79,3,3,3.5,4,4,3,3,4,3.5,5,,Hannah,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 265 | Taco Villa,Carnitas,10/27/2016,,,,,,,5.95,3,,,18,20,0.57,4,3,4,3,4,2,3.5,3,5,3.9,Yes,Scott,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 266 | Taco Villa,Tejano,10/27/2016,,,,,,,6.99,3.5,,,19,21,0.67,2,5,4.2,3,4.7,5,3.7,4.2,5,4,Yes,Sage,,,,,,,x,x,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,, 267 | Taco Villa,Al pastor,10/27/2016,,,,,,,,4.5,,,,,,3,4,4,4,4,4,4,4,3,4,Yes,Marc,,,,,x,,,,,x,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 268 | Taco Villa,Shrimp with guac,10/27/2016,,,,,,,,2,,,,,,2,4,3,4,4,4,3,4,4,3,Yes,Jeremy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 269 | Taco Villa,Bean & cheese,10/27/2016,,,,,,,,3,,,,,,5,5,,3,2,2,,1,5,2,No,Shijia,,,,,,,x,,,,,,,,x,,,,,,,,,,,,,,,,,,,,,,, 270 | Taco Stand Encinitas,California ,10/29/2016,Encinitas ,642 S Coast Hwy 101,https://www.yelp.com/biz/the-taco-stand-encinitas,4,4.4,,7.49,4,,,17.5,23.5,0.77,2,3.5,4.2,4.3,4,2.2,4.5,4,2.2,4.2,Yes,Scott,Much better than the first time we tried this location ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 271 | Taco Stand Encinitas,California ,10/29/2016,,,,,,,7.49,2,,,18.5,22,0.71,3.8,3.8,4,4.2,3.75,4,4.75,4.4,3.8,4.2,Yes,Emily,Possibly favorite green salsa so far,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 272 | Donato's Taco Shop,Al pastor ,11/1/2016,,,,,,,5.99,4,,,19.5,21.5,0.72,3,4.5,3.7,2.8,5,4.5,3,2.3,4.5,3,No,Scott,,,,,X,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 273 | Donato's Taco Shop,Carne asada,11/1/2016,,,,,,,5.99,2,,,21,23.5,0.92,2,4,4.5,4,4,3,4,4,2,4,Yes,Elynn,,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 274 | Ortiz's Taco Shop #2,California,11/2/2016,Pacific Beach,1313 Garnet Ave,https://www.yelp.com/biz/ortizs-taco-shop-san-diego-2,4,4.2,,6.39,4,,,20,21,0.7,4,4,4,4,4.5,4.5,4.2,4.5,4.5,4.25,Yes,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 275 | Ortiz's Taco Shop #2,California chicken,11/2/2016,,,,,,,6.39,4.25,,,22,22,0.85,2,4,3.7,2,4,4.5,4.5,2.7,5,2.66,No,Sage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 276 | Ortiz's Taco Shop #2,California,11/2/2016,,,,,,,6.39,4.5,,,22.5,20.5,0.75,3,4.4,4,4,4.5,4.2,4.3,4,5,4.2,Yes,Shijia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 277 | Ortiz's Taco Shop #2,California,11/2/2016,,,,,,,6.39,4.75,,,20.5,20.5,0.69,2,,3.5,3,5,4,2,3.5,3.5,3.5,Yes,Jeremy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 278 | El Portal Fresh Mexican Grill,Mahi,11/6/2016,Clairemont,4101 Genesee Ave,https://www.yelp.com/biz/el-portal-fresh-mexican-grill-san-diego,4,4.4,X,7.35,2.3,,,19.5,23.5,0.86,4,4,3.5,2,1.5,2,2,3,1.2,3.1,No,Scott,,,,,,X,,,,,,,X,,,,X,,,X,,,,,,,,,,,,,,,,,, 279 | El Portal Fresh Mexican Grill,Carnitas,11/6/2016,,,,,,,6.7,3.75,,,18,22.5,0.73,3.5,4,4,3,3.75,4,3,3.5,4.5,3.75,Yes,Emily,,,,,X,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 280 | El Zarape,California,11/8/2016,,,,,,,6.25,4,,,17,19.5,0.51,2.5,4,3.75,4,3.75,5,4,4,5,3.9,Yes,Scott,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 281 | El Zarape,California,11/8/2016,,,,,,,6.25,4,,,17,22,0.65,3,,4,4,4,4,2,3,5,4,Yes,Ant,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 282 | El Zarape,California,11/8/2016,,,,,,,6.25,3,,,,,,4,4,2,2,4,3,3,3,5,3,No,Erik,,,,x,x,x,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 283 | El Zarape,Carne asada supreme,11/8/2016,,,,,,,6.25,4,,,18,21,0.63,4,4,,3.5,3.5,4,4,4,4,4,Yes,Tom,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 284 | Famoso Mexican Street Food,Cali Diablo,11/14/2016,Downtown,815 C St,https://www.yelp.com/biz/famoso-mexican-street-food-san-diego-20,4.5,3.9,,10.5,3,,,20,27,1.16,2,2.5,3.3,3.5,1.5,4,2.5,2.5,3,3.1,No,Scott,Big roach on the floor while eating. Good prep took quite a long time. Cut in half!,,,X,X,X,X,X,X,,,X,,,,,,,,,X,,,,,,,,,,,,,,,,, 285 | Valentines Mexican Food,Carne asada,11/16/2016,,,,,,,6.75,3,,,18,21.5,0.66,4.5,4.7,4.5,3.5,4,4.5,4.5,3.5,5,4.2,Yes,Scott,,,,x,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 286 | Valentines Mexican Food,Pork california,11/16/2016,,,,,,,7.9,4,,,19,22,0.73,5,5,4,5,5,3,4,5,3,5,Yes,Justin K,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 287 | Valentines Mexican Food,California,11/16/2016,,,,,,,7.9,4,,,20,22,0.77,3,5,5,4,5,4,3,5,2,4.5,Yes,Shreejoy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 288 | Valentines Mexican Food,California,11/16/2016,,,,,,,7.9,4,,,20,21.5,0.74,4,4,3,4,4,4,3,3,4,4,Yes,@synapticlee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 289 | Valentines Mexican Food,California,11/16/2016,,,,,,,7.9,3.5,,,,,,4,3.5,4.7,4,4.5,4.5,4.5,4,3.5,4.7,Yes,@danjlurie,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 290 | Cancun Mexican & Seafood,California ,11/17/2016,,,,,,,6.99,4.3,,,,,,4.8,5,4,4.4,5,4,4.3,4.3,5,4.5,Yes,Scott,Sour cream is surprisingly good. Avocado salsa works very well on the burrito,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 291 | Cancun Mexican & Seafood,California ,11/17/2016,,,,,,,6.99,4,,,,,,4.5,4.5,4,4.5,4,4,3.5,4.5,5,4.5,Yes,Emily,,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 292 | Los Panchos Taco Shop,California,11/23/2016,Hillcrest,409 Washington St,https://www.yelp.com/biz/los-panchos-san-diego-2,3,3.4,x,6.25,3,,,18,21.5,0.66,3.5,5,4,3,4,3,3.5,3.5,3,3.7,Yes,Scott,,,,x,x,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 293 | Los Panchos Taco Shop,Bitchin California,11/23/2016,,,,,,,7.25,4,,,19,24,0.87,4,4,5,4.5,4,3.5,5,4.5,5,4.4,Yes,Richard,,,,x,,x,x,x,,,,x,,,,x,x,,,,,,,,,,,,,,,,,,,,, 294 | Los Panchos Taco Shop,Tijuana,11/23/2016,,,,,,,7,3.5,,,19.5,22,0.75,4,4,3.5,4,4,3.5,4.5,4,3.5,3.7,Yes,Tom,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 295 | Pollos Maria,Combo chicken,11/26/2016,,,,,,,6.99,3.5,,,20.5,22.5,0.83,3.5,2.5,4,3.5,3,2.5,2.5,4.5,0.5,3.8,Yes,Scott,Started off really great but ended with poor uniformity and wrap integrity,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 296 | Pollos Maria,Carne asada,11/26/2016,,,,,,,6.49,3,,,17.5,17,0.4,3.5,4,3,4,3.5,4,3,4,4.5,3.5,No,Emily,Just way too small,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 297 | El Pollo Loco,Chicken avocado,11/27/2016,Oceanside,3500 College Blvd,https://www.yelp.com/biz/el-pollo-loco-oceanside-5,3.5,4.1,,5.99,3.5,,,17.5,21,0.61,2,3,3.8,2.5,2.5,3,2.5,3,2.6,3.2,No,Scott,,,,,,x,,,,,x,,,,,,,,,x,,,x,,,,,,,,,,,,,,, 298 | Gloria's Taco Shop,California ,12/2/2016,South Park,1233 28th St,https://www.yelp.com/biz/glorias-taco-shop-san-diego,4,4.3,,5.65,3,,,19.5,22,0.75,4,1.5,2,3,4.2,4,3,2,4.5,2.7,No,Scott,Horchata tasted like bubble gum,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 299 | Gloria's Taco Shop,Cabeza,12/2/2016,,,,,,,5.49,3,,,19,20.5,0.64,4.5,5,2,2,2.5,3.5,3,2.5,3,2,No,Richard,Meat is squishy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 300 | Mr. Ruribertos Taco Shop ,California,12/10/2016,Mission Beach,3202 Mission Blvd,https://www.yelp.com/biz/ruribertos-taco-shop-san-diego,3.5,3.7,,7.75,4,,,20,21,0.7,3.5,2.5,3,3.3,1.4,2.3,2.2,3.3,4.5,2.9,No,Scott,,,,X,X,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 301 | Mr. Ruribertos Taco Shop ,Carne asada,12/10/2016,,,,,,,7.75,4,,,19.5,21,0.68,4,4.5,2,2,3.5,3.5,2,2,4,3,No,Brent,"Carrots are bad, got better as it went on",,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 302 | Mister Falafel,Chicken Shawarma,12/15/2016,Clairemont,4461 Clairemont Mesa Blvd,https://www.yelp.com/biz/mister-falafel-san-diego,4.5,4.6,,6.99,3.7,,,24,18.5,0.65,3.6,4,4,3,3.8,4.3,,3.8,2,3.5,Yes,Scott,Richard recommended this. Like a Mediterranean burrito,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 303 | Rigoberto's Taco Shop,California,1/4/2017,,,,,,,6.6,,,,23,20.5,0.77,4,4.5,4,3.5,3.5,5,1.5,3.5,4.5,3.7,Yes,Scott,Usually better. Too much enchilada sauce this time,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 304 | Rigoberto's Taco Shop,Chile Relleno,1/4/2017,,,,,,,6.6,,,,20.5,21.5,0.75,4,2,,4,,4.6,4.2,3.75,5,3.9,Yes,Sage,Orange salsa very spicy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 305 | Los Tacos,Fusion,1/7/2017,,,,,,,8.5,3.9,,,21,21,0.74,3,4.5,4.1,3,3.7,4,4.3,4.2,5,3.9,Yes,Scott,Fresca and verde salsas are the best,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 306 | Los Tacos,Local,1/7/2017,,,,,,,7.9,4,,,20.5,21,0.72,3.5,4,4,3,4,4.5,4,3.8,4.8,3.8,Yes,Emily,Pastor is dry,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 307 | Taco Villa,Chicken,1/10/2017,,,,,,,4.99,3.5,,,18.5,22.5,0.75,2.5,4.5,3,2.5,3,3,2,2,4,3,,Scott,Somehow way better when it was leftover,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 308 | Lupe's Taco Shop,Hot cheetos,1/12/2017,Linda Vista,7621 Linda Vista Rd,https://www.yelp.com/biz/lupes-taco-shop-san-diego,3.5,4.5,x,7.29,3.5,,,19,21.5,0.7,3,2,3.5,3.5,3,2.5,3.7,3.2,4.2,3.7,,Scott,"Cheese is cold, but guac, salsa, and chips are good",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 309 | Lupe's Taco Shop,Surfin California,1/12/2017,,,,,,,7.89,3,,,18.5,25.5,0.96,4,5,4.5,4,4.5,3.5,3,4.5,2.5,4.25,,Richard,quality ingredients,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 310 | Lupe's Taco Shop,California,1/12/2017,,,,,,,7.49,3.7,,,20,26,1.08,4,3.5,3.9,4,3.7,2,3.5,4,4,3.9,,Tom,tons of french fries,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 311 | Lupe's Taco Shop,Spicy a la Diabla,1/12/2017,,,,,,,7.49,5,,,18,22,0.69,4,4,4,2,3,0,,1,2,2,,Rob L,way too spicy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 312 | Los Tacos,Local,1/15/2017,,,,,,,7.9,3.5,,,21.5,23.5,0.94,4.5,5,4,3.5,4,2.8,4,4.5,3.7,4.2,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 313 | Los Tacos,Local,1/15/2017,,,,,,,7.9,2,,,19.5,24,0.89,4.2,4,4.2,3.8,4,3,3.8,4.5,5,4.2,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 314 | Taco Villa,Pollo asado,1/20/2017,,,,,,,5.99,4.5,,,18.5,21,0.65,2,4,2.5,3.5,4.5,3,2,1.5,3.4,3.1,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 315 | Taco Villa,Al pastor,1/20/2017,,,,,,,6.99,3.5,,,18.5,20.5,0.62,2.5,4.5,4,4,2,3,3,3,4,3,,Ricardo ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 316 | Rigoberto's Taco Shop La Jolla,California,2/15/2017,,,,,,,6.85,3.5,,,,,,3,2,3.5,3.5,4,3,3.5,3.5,4.5,3.6,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 317 | Rigoberto's Taco Shop La Jolla,California,2/15/2017,,,,,,,6.85,4,,,,,,5,5,4.5,4,5,4,4,5,5,4.3,,Nihal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 318 | Taco Villa,California,2/21/2017,,,,,,,,4.3,,,18.5,21.5,0.68,3,3,3.5,4,3,1.5,3.8,4,5,4,,Scott,Salsa much better this time than before,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 319 | Cotixan,California,2/23/2017,Clairemont,4370 Genessee Ave,https://www.yelp.com/biz/cotixan-mexican-and-seafood-san-diego,4,4,,7.19,4.5,,,20,24,0.92,4,2,3,3.8,3.5,2,4,4,4,3.5,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 320 | Los Tacos,Local,2/25/2017,,,,,,,7.9,2.5,,,22,22,0.85,3,4.5,4.3,4,3,3.1,3.9,4.2,3,4.1,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 321 | Los Tacos,Local,2/25/2017,,,,,,,7.9,3,,,21,24,0.96,3,3.5,4.5,4,4,4,4,4,3.5,4,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 322 | Los Tacos,Local,2/25/2017,,,,,,,7.9,3,,,,,,5,5,5,4,5,4,4,5,4,5,,Audrey L,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 323 | Los Tacos,Local,2/25/2017,,,,,,,7.9,3,,,,,,3.5,4,4,4,4.5,3.5,4,3.5,4,4,,Spencer,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 324 | Lourdes,Carnitas,3/3/2017,Encinitas,2113 San Elijo Ave,https://www.yelp.com/biz/lourdes-encinitas-2,4,4.7,,7.35,3.5,415,0.6916666667,21,19,0.6,3.5,3,3.5,3,4.5,4.5,4,4,5,3.75,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 325 | Lourdes,California,3/3/2017,,,,,,,6.35,3.5,425,0.7083333333,19,20,0.6,4,3,3,3,2.5,3,3.5,2.8,5,3.1,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 326 | Vallarta Express,California,3/16/2017,,,,,,,7.5,4,,,,,,3,,4,4,3,5,3,4,5,4.1,,Erik,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 327 | California burritos,California everything,4/7/2017,,,,,,,6.5,4.5,520,0.6265060241,22.5,21.5,0.83,4.5,3,3.5,4.5,3.5,4,3.5,4.3,4.3,4.1,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 328 | California burritos,California everything,4/7/2017,,,,,,,6.5,4,476,0.56,23,21.5,0.85,4,3.5,4.5,4,3.5,4.5,4,4,4.5,4,,Ricardo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 329 | California burritos,California everything mini,4/7/2017,,,,,,,4.75,4,,,18,17,0.41,4,4,4.5,4.3,4.5,4.5,4.8,4.8,5,4.5,,Luis,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 330 | California burritos,Surf & Turf,4/7/2017,,,,,,,6.75,4,560,0.5656565657,24.5,22.5,0.99,4,4,4,3.5,3.5,3,2,3.5,3.5,3.5,,Hannah,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 331 | California burritos,California everything,4/7/2017,,,,,,,6.5,4,,,21.3,23.8,0.96,3,3,4,4,4,4,3,4,4,4,,Clark,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 332 | California burritos,Surf & Turf,4/7/2017,,,,,,,6.75,4,,,,,,3,5,5,,,5,,4,5,4.5,,Justin C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 333 | Los palmitos,California,4/23/2017,Clairemont,5145 Clairemont Mesa Blvd,https://www.yelp.com/biz/los-palmitos-taco-shop-san-diego,4,4.1,x,7.1,4,,,22.5,23,0.95,4.5,5,3.8,3.8,4,4,3.9,4.3,5,4.3,,Scott,red-orange salsa has a slight fruity flavor that's really good,,,X,,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 334 | Los palmitos,Surf & Turf,4/23/2017,,,,,,,8.25,3.5,,,20,24,0.92,3.5,4,4,3,3.5,4.5,3.5,3.5,5,3.6,,Emily,Rice was plain. Also don't like rice in burrito,,,X,,X,,,,,,X,,X,,,,,,,X,,,,,,,,,,,,,,,,, 335 | Taco Villa,Carnitas,4/25/2017,,,,,,,5.99,4,450,0.703125,20,20,0.64,2,4.5,4.5,3,3.8,4.4,2.5,3.5,3,4,,Scott,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 336 | Taco Villa,Carnitas,4/25/2017,,,,,,,5.99,4,,,18.5,20,0.59,4,4,4,3,4,3.5,2.5,3.5,5,3.5,,Richard,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 337 | Lupe's Taco Shop,TGunz,4/25/2017,,,,,,,10,3,920,0.5974025974,23,29,1.54,3,4,3.2,3.5,1.8,1.8,3.5,3.7,3.5,3.9,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 338 | Lupe's Taco Shop,TGunz,4/25/2017,,,,,,,10,4.2,925,0.6006493506,23,29,1.54,3,4.5,3.5,3.5,2.5,2,3,3.5,4.5,3.5,,Ricardo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 339 | Filiberto's,Adobada,5/2/2017,Encinitas,476 S Coast Hwy 101,https://www.yelp.com/biz/filibertos-encinitas-2,3,3.8,,6.25,4.4,,,,,,4.2,4.5,4,3,5,3.8,2.5,3,5,3.7,,Scott,,,,,x,x,,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,, 340 | Filiberto's,California,5/2/2017,,,,,,,6.25,3,,,,,,4.5,4.5,3.7,3.5,4,3.5,3,4,4.5,4,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 341 | Don Carlos Taco Shop,California,5/9/2017,La Jolla,737 Pearl St,https://www.yelp.com/biz/don-carlos-taco-shop-la-jolla,4,4.5,,7.75,5,,,18,22.5,0.73,3.5,4.2,3.3,3.7,4,4,2.9,3,5,3.7,,Scott ,,,,X,X,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 342 | Don Carlos Taco Shop,California,5/9/2017,,,,,,,7.75,2.5,,,20,22.5,0.81,4,4,2.6,3.6,4,4,3.6,4,4,2.9,,Luis,,,,X,X,,X,X,X,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 343 | Los Tacos 2,Al pastor tradicional ,5/13/2017,Oceanside,3480 Marron Rd,https://www.yelp.com/biz/los-tacos-oceanside-2,4.5,5,,8.25,3.8,430,0.6323529412,22.5,19.5,0.68,4,,4,3,3,2.5,4,3,5,3.6,,Scott,,,,,X,X,,,,X,,,,,,,,,,,,,,,,,,,,,,,,,,,, 344 | Rubios UCSD,Grilled fish salmon,5/17/2017,,,,,,,8.99,4,350,0.7446808511,15.5,19.5,0.47,3.5,3,3.5,3.5,4,2,4,4,4,3.4,,Tom,,,,,,,,,,,,,x,x,,,,,,x,,,,,,,,,,,,,,,,,x, 345 | Rigoberto's Taco Shop,California,5/17/2017,,,,,,,6.85,4,,,23.5,23,0.99,3.5,5,3.3,3,5,2,3,3.8,3.5,3.9,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 346 | Rigoberto's Taco Shop,California,5/17/2017,,,,,,,6.85,4,,,23.5,23.5,1.03,4,5,4,4,5,3.5,2,3.5,4,4,,Elynn,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 347 | El Dorado Mexican Food,California,5/26/2017,,,,,,,7.4,3.3,,,19.5,24.5,0.93,5,4,4.2,3.5,2.9,3,4,4,4,4,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 348 | El Dorado Mexican Food,California,5/26/2017,,,,,,,7.4,3.5,,,19.5,26.5,1.09,4.5,4,4,3.5,3,3,2.5,4,3.8,3.8,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 349 | Los Tacos 2,Cheese steak,5/29/2017,,,,,,,9.95,4.2,600,0.7792207792,22,21,0.77,3.5,5,3,1.5,3,2.5,3,2.2,2.5,2.8,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 350 | Roberto's Taco Shop Hillcrest,Asada,5/30/2017,Hillcrest,420 Robinson Ave,https://www.yelp.com/biz/robertos-taco-shop-hillcrest-san-diego,4,4.2,,7,3.5,450,0.625,19.5,21.5,0.72,4,4,2,2.5,4.5,4,3,2.9,4.5,2.8,,Scott,,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 351 | Roberto's Taco Shop Hillcrest,California Surf and Turf,5/30/2017,,,,,,,9,3,,,24,22,0.92,3.5,4,4,4,4.5,4.5,2,3.5,4,4,,Richard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 352 | Roberto's Taco Shop Hillcrest,California,5/30/2017,,,,,,,7,3.5,,,23,21.5,0.85,3,3,2,2,3,2,3,2,3,2.2,,Tom,,,,x,,,x,x,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 353 | Burros and Fries,Shrimp california,6/4/2017,,,,,,,6.99,4,580,0.8656716418,21,20,0.67,3,4,4,2.5,2.5,3,3,3,5,3,,Emily,too many fries. Not great,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 354 | Burros and Fries,California,6/4/2017,,,,,,,7.19,3.5,635,0.7839506173,21,22,0.81,3.5,4.5,3.5,3.5,3,3.5,4,3.5,5,3.8,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 355 | Taco Stand Encinitas ,California,6/10/2017,,,,,,,7.89,4,,,19,22.5,0.77,3,,4.5,4,4.5,4.5,4.5,4.8,3.3,4.7,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 356 | Taco Stand Encinitas,California,6/10/2017,,,,,,,7.89,4,,,18,21.5,0.66,3,,4,4,4.5,4,4.5,4.5,5,4.5,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 357 | Cotixan,California,6/16/2017,,,,,,,6.9,4.3,550,0.6875,19,23,0.8,3,3,3.5,3.5,3.5,3.5,3.8,4,5,3.7,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 358 | Vallarta Express,Surf & Turf,6/24/2017,,,,,,,8.55,3,610,0.7261904762,20,23,0.84,3,2.5,3,3,3.5,2.8,3.5,2.8,1.5,3,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 359 | Vallarta Express,California,6/24/2017,,,,,,,7.8,2.5,620,0.6326530612,20.5,24.5,0.98,3,2,3.5,3,3,4,3,3.8,4.5,3.5,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 360 | Caliente Mexican Food,carne asada ,7/6/2017,Sorrento Valley,11815 Sorrento Valley Rd,https://www.yelp.com/biz/caliente-mexican-food-san-diego,3.5,4.4,,5.56,2.5,420,0.6176470588,21.5,20,0.68,2.5,3,2.5,3.5,4.5,4.5,3.7,3.3,4.5,3.5,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 361 | Caliente Mexican Food,carne asada ,7/6/2017,,,,,,,5.56,4,,,21,21.5,0.77,4,4,4,3,4,2,4,3,3,4,,Chris G,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 362 | Caliente Mexican Food,fried fish,7/6/2017,,,,,,,5.56,3.5,,,22.5,19,0.65,3.5,3,,3.5,3,4,4.5,3.5,4,3.5,,Xi,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 363 | Caliente Mexican Food,California,7/6/2017,,,,,,,6.47,4,,,23,22,0.89,1,2,2,2,3,3,1,2,3,2,,Erik K,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 364 | Burrito Factory,Steak everything ,7/13/2017,Austin,2025 Guadalupe St,https://www.yelp.com/biz/burrito-factory-austin,4.5,4.8,,7.35,3.5,,,17,23,0.72,3.2,3,3.5,3.5,3,3.3,3,3.8,2,3.5,,Scott,,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 365 | Taco Villa,Carne asada,7/12/2017,,,,,,,6.99,3,,,,,,3,4.5,2,3,2.5,4,2,2,4,2,,Richard,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 366 | Taco VIlla,California,7/19/2017,,,,,,,6.99,4,,,20.5,21.5,0.75,4,,3.5,3.5,3.5,3.5,3.5,3.5,5,3.7,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 367 | Los Tacos 2,Local,7/22/2017,,,,,,,8.5,3.8,,,23,22,0.89,4,4.5,3,4,3,2.5,3.5,3.5,3,4,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 368 | Los Tacos 2,Local,7/22/2017,,,,,,,8.5,4,,,22,21,0.77,4,4,3.75,4,3.5,3.5,4,5,3.5,4,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 369 | Valentines Mexican Food,Carne asada,8/7/2017,,,,,,,6.75,4,,,19.5,21,0.68,4,4.5,3.5,3.5,4.5,4.5,3,3.5,4,3.9,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 370 | Valentines Mexican Food,California,8/7/2017,,,,,,,7.9,4,,,22,25,1.09,4,5,5,5,5,5,5,4,3.5,4.8,,Simon,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 371 | Vallarta Express,California,8/9/2017,,,,,,,8.35,4.5,,,21,23,0.88,3,3,4,3,4,2.5,4,4.5,4,4.1,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 372 | Roberto's Taco Shop Hillcrest,Golden State,8/14/2017,,,,,,,25,4,,,21.5,24,0.99,3.8,4.4,4,3.8,4,4,4,4,5,4.2,,Scott,Good. but just get a regular Cali.,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 373 | Roberto's Taco Shop Hillcrest,California,8/14/2017,,,,,,,7,4,,,19.5,21.5,0.72,4.5,5,4,4,4,3.7,3.8,4.6,4.8,4.2,,Simon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 374 | Kotija Jr,California,8/19/2017,Del Mar,2668 Del Mar Heights Rd,https://www.yelp.com/biz/kotija-jr-taco-shop-del-mar,4,4.2,,6.99,4,550,0.7857142857,20,21,0.7,4,5,3.5,3.8,3,2.5,3.3,4,5,3.7,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 375 | Kotija Jr,Steak fajitas,8/19/2017,,,,,,,7.1,3,,,21,22,0.81,3.5,5,4,4,4.5,4.75,3.75,4,5,4.2,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 376 | El Rey Moro,Hashbrown,8/20/2017,,,,,,,6.47,4,450,0.625,22.5,20,0.72,3,3,2,2.5,1.5,2.5,2.5,3,5,3.2,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 377 | El Rey Moro,Hashbrown,8/20/2017,,,,,,,8.94,3.5,,,21.5,22,0.83,2.5,3.5,3.5,3.5,3.5,4,3,3.5,4.5,3.8,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 378 | Taco Villa,Carnitas,8/25/2017,,,,,,,5.99,2,,,20,21.5,0.74,2,2.5,4,3,4,3.5,3,3,5,3.8,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 379 | Taco Villa,Carne asada,8/25/2017,,,,,,,6.99,3.5,,,,,,4,4,4,4.5,4,3.5,4,4,4,4.3,,Nuttida,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 380 | Los Tacos,Local,9/4/2017,,,,,,,8.5,3.5,540,0.6835443038,21.5,21.5,0.79,3.5,4,4.5,4,3,4,3.5,4.5,5,4.3,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 381 | Los Tacos,Local,9/4/2017,,,,,,,8.5,3.5,540,0.6136363636,21,23,0.88,4,4,4,4.5,4.2,4.5,4,4.5,4.8,4.5,,Emily,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 382 | Rigoberto's Taco Shop,California ,9/5/2017,,,,,,,6.85,3.5,,,22.5,22.5,0.91,3,4.5,3.8,3.8,4,3.5,3.5,4,3,4.1,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 383 | Rigoberto's Taco Shop,California ,9/5/2017,,,,,,,6.85,3.5,,,22.2,22.5,0.89,3,4.5,4,4,4.5,3,4,4,3.5,4.25,,Sage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 384 | Burrito Box,Steak with guacamole,12/16/2017,,,,,,,11.5,3.5,,,15,25,0.75,2,2,4,3.5,3,4.5,3.5,4,2,3.5,,Scott,Maybe a little better than chipotle. Or at least more authentic.,,x,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 385 | Taco Stand,California ,12/29/2017,,,,,,,7.89,4,,,19,23,0.8,4,3,4,4,3,4,3.5,4.3,4.5,4.2,,Scott,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 386 | Taco Stand,California ,12/29/2017,,,,,,,7.89,5,,,20,21.5,0.74,5,5,5,5,4,4,5,5,3,4.5,,Ben S,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -------------------------------------------------------------------------------- /rstudioconf-2018-intro-shiny-rmarkdown.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | --------------------------------------------------------------------------------