Repository: equitable-equations/youtube Branch: main Commit: 3f38b65eb011 Files: 221 Total size: 925.6 KB Directory structure: gitextract_c_u5i91x/ ├── .gitignore ├── ANOVA in R/ │ ├── README.md │ └── Script - anova in R.R ├── ANOVA in R - a complete example/ │ ├── README.md │ └── Script - ANOVA in R - a complete example.R ├── Add great alt text / │ ├── README.md │ └── alt text.qmd ├── All about facets/ │ ├── README.md │ └── script - facets.R ├── All about system prompts/ │ ├── README.md │ └── script - system prompts.R ├── Avoiding data dredging/ │ ├── README.md │ └── Script - data dredging.R ├── Beautiful bar charts in R/ │ ├── README.md │ └── Script - beautiful bar charts in R.R ├── Beautiful presentations/ │ ├── README.md │ ├── dt_example.xlsx │ └── quarto presentations.qmd ├── Beautiful tables with gt/ │ ├── README.md │ └── gt tables.qmd ├── Better box plots with ggplot/ │ ├── README.md │ └── Script - better box plots with ggplot.R ├── Bibliographies with R and Quarto/ │ ├── Quarto bibliographies.qmd │ ├── README.md │ ├── elsevier-with-titles.csl │ └── my-bib.bib ├── Binning variables in R/ │ ├── README.md │ ├── script - binning variables.R │ └── titanic.xlsx ├── Bivariate continuous probability distributions/ │ └── README.md ├── Combining columns in R with unite()/ │ ├── README.md │ └── unite.R ├── Combining data sets with left_join/ │ ├── README.md │ └── left_join.R ├── Combining observations with bind_rows()/ │ ├── README.md │ └── bind_rows.R ├── Computing normal probabilities examples/ │ └── README.md ├── Conditional probability distributions/ │ └── README.md ├── Contingency tables in R/ │ ├── README.md │ └── Script - contingency tables.R ├── Controlling the family-wise error rate/ │ ├── README.md │ └── Script - controlling the fwer.R ├── Creating columns with mutate/ │ ├── README.md │ └── script - mutate.R ├── Cross references in R and Quarto/ │ ├── README.md │ └── cross references.qmd ├── Data analysis - Billboard Hot 100/ │ ├── README.md │ └── Script - billboard_top_100.R ├── Data analysis - US colleges/ │ ├── README.md │ └── Script - analyzing college data.R ├── Data analysis - age gaps and bechdel tests/ │ ├── README.md │ └── script - age gaps.R ├── Data analysis - floristic quality/ │ ├── README.md │ ├── Script - floristic quality data.R │ └── student floristic quality data/ │ ├── lfc_fqa_team1.xlsx │ ├── lfc_fqa_team2.xlsx │ └── lfc_fqa_team3.xlsx ├── Data analysis - scooby doo/ │ ├── README.md │ └── script - analyzing scooby doo.R ├── Data visualization in 36 minutes/ │ ├── README.md │ └── Script - dataviz.R ├── Data wrangling with R/ │ ├── README.md │ └── script - data wrangling.R ├── Deviance in logistic regression/ │ ├── README.md │ └── script - deviance in log models.R ├── Discrete bivariate distributions/ │ └── README.md ├── Du Bois challenge plate 25/ │ ├── README.md │ ├── camcorder_code.R │ ├── du bois script.R │ └── du bois_math.ggb ├── Essential R tools for regression modeling/ │ ├── README.md │ └── broom.R ├── Gamma distribution/ │ └── README.md ├── Gamma distribution in R/ │ ├── README.md │ └── Script - the gamma distribution in R.R ├── Getting started with R/ │ ├── README.md │ └── amy.csv ├── Getting started with simple linear regression/ │ └── README.md ├── Git branches and merges/ │ ├── README.md │ ├── pivot longer.R │ └── pivot wider.R ├── Git setup/ │ ├── README.md │ └── git for R users.R ├── Goodness of fit testing example/ │ ├── README.md │ └── Script - goodness of fit example.R ├── Graphing functions/ │ ├── README.md │ └── script - graphing functions.R ├── How to add annotations/ │ ├── README.md │ └── Script - annotate.R ├── How to add color to R ggplots/ │ ├── README.md │ └── script - how to add color to R ggplots.R ├── How to create an other category/ │ ├── README.md │ ├── lumping variables.R │ └── quitting.csv ├── How to make a pride flag/ │ ├── README.md │ └── script - pride flag.R ├── How to purrr/ │ ├── README.md │ └── script - purrr.R ├── How to put a project onto GitHub/ │ ├── README.md │ └── github setup.R ├── How to show a ggplot to AI/ │ ├── README.md │ └── script - ggplot with AI.R ├── Hypothesis testing in R/ │ ├── README.md │ └── Script - hypothesis testing in R.R ├── If-else statements in R/ │ ├── README.md │ ├── Script - ifelse.R │ └── plant_updates.csv ├── Imputing missing bikeshare data/ │ ├── README.md │ └── bikeshare missing data.R ├── Integrate AI with GitHub Copilot/ │ ├── README.md │ ├── scooby.xlsx │ └── script - integrating AI.R ├── Latex for R users/ │ ├── LaTeX for R users.qmd │ └── README.md ├── Learn R in 39 minutes/ │ ├── README.md │ ├── Scooby.xlsx │ └── script - R in 39.R ├── Linear modeling using categorical variables/ │ ├── README.md │ └── Script - parallel slopes models.R ├── Locating files with here()/ │ ├── README.md │ ├── Scooby.xlsx │ └── Script - here.R ├── Log-normal/ │ └── README.md ├── Log-normal in R/ │ ├── README.md │ └── script - lognormal in R.R ├── Logistic regression example/ │ ├── README.md │ └── logistic regression in R example.R ├── Logistic regression in R/ │ ├── README.md │ ├── admissions.csv │ └── script - logistic regression in R.R ├── Maximum likelihood example/ │ └── README.md ├── Multiple linear regression in R/ │ ├── README.md │ └── Script - multiple regression in R.R ├── Multiple linear regression with interaction in R/ │ ├── README.md │ └── Script - multiple linear regression with interaction.R ├── Multiple regression in R - example/ │ ├── README.md │ ├── Script - multiple regression in R - example.R │ └── parenthood.Rdata ├── Mutating data frames with case_when/ │ ├── README.md │ ├── Script - case_when.R │ └── gradebook.csv ├── Nested data frames and multiple models/ │ ├── README.md │ └── Script - multiple models.R ├── Normal distribution in R/ │ ├── README.md │ └── Script - normal distribution in R.R ├── Not-so-simple linear regression/ │ ├── README.md │ └── simple linear regression.R ├── Organizing bar charts by frequency/ │ ├── README.md │ └── Script - organizing bar charts by frequency.R ├── Overfitting in machine learning/ │ ├── README.md │ └── overfitting demonstration.R ├── Percentiles in R/ │ ├── README.md │ └── script - percentiles.R ├── Percentiles of continuous distributions/ │ └── README.md ├── Pie charts with R/ │ ├── README.md │ └── pie charts.R ├── Poisson regression/ │ ├── README.md │ └── websites.xlsx ├── Poisson regression in R/ │ ├── README.md │ └── script - poisson in R.R ├── Prediction intervals for linear models/ │ ├── README.md │ └── Script - prediction intervals.R ├── R Markdown/ │ ├── R Markdown practice.Rmd │ ├── R-Markdown-practice.html │ └── README.md ├── README.md ├── Regression analysis - backward selection/ │ ├── README.md │ ├── Slides - bss.R │ └── performance.csv ├── Repositioning ggplot legends/ │ ├── README.md │ └── Script - repositioning ggplot legends.R ├── Return of the starwars data set/ │ ├── README.md │ └── script - starwars.R ├── Scatterplots and regression lines in R/ │ ├── README.md │ └── Script - scatterplots and regression lines.R ├── Sensitivity, specificity, precision, recall/ │ └── README.md ├── Simple linear regression with R (intro)/ │ └── README.md ├── Simpson's paradox/ │ ├── README.md │ ├── batting.csv │ └── script - simpsons paradox.R ├── Splitting columns in R with separate()/ │ ├── README.md │ └── script - splitting columns with separate.R ├── Splitting data frames with slice()/ │ ├── README.md │ └── Script - splitting data sets.R ├── Statistical power and sample size/ │ └── README.md ├── Teaching an AI to webscrape/ │ ├── README.md │ └── ellmer tools.R ├── The poisson distribution/ │ └── README.md ├── Tidy data/ │ └── README.md ├── Tidy tuesday analysis - Ravelry yarn/ │ ├── README.md │ └── yarn script.R ├── Tidying data with pivot_longer/ │ ├── 03 - Body Temperatures.xlsx │ ├── README.md │ └── Script - pivot_longer.R ├── Tidying data with pivot_wider/ │ ├── FQA.csv │ ├── README.md │ └── Script - pivot_wider.R ├── Type I and type II errors/ │ └── README.md ├── Understand ANOVA in 8 minutes/ │ └── README.md ├── Understanding R functions/ │ ├── README.md │ └── script - undedrstanding R functions.R ├── Understanding geom_smooth/ │ ├── README.md │ └── script - geom_smooth.R ├── Understanding the chi-squared distribution/ │ └── README.md ├── Uniform distribution/ │ └── README.md ├── Using Quarto with R and Python/ │ ├── Quarto demo.qmd │ └── README.md ├── What are order statistics?/ │ └── README.md ├── What is Anscombe's quartet?/ │ ├── README.md │ └── Script - Anscombe.R ├── What is quarto?/ │ ├── README.md │ ├── erykah.xlsx │ └── what is quarto.qmd ├── What is the central limit theorem?/ │ └── README.md ├── Working with lists in R/ │ ├── README.md │ └── Script - lists in R.R ├── Write your own R functions/ │ ├── README.md │ └── Script - functions.R ├── Writing prompts using interpolate()/ │ ├── README.md │ └── interpolate.R └── youtube.Rproj ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .Rproj.user .Rhistory .RData .Ruserdata .DS_Store ================================================ FILE: ANOVA in R/README.md ================================================ # ANOVA in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **ANOVA in R**, which you can find at . ================================================ FILE: ANOVA in R/Script - anova in R.R ================================================ # Analysis of variance # Is weight independent from feed? library(tidyverse) View(chickwts) ?chickwts ggplot(chickwts, aes(x = feed, y = weight)) + geom_boxplot(outlier.shape = NA) + geom_jitter() + theme_minimal() model <- aov(chickwts$weight ~ chickwts$feed) summary(model) ?TukeyHSD TukeyHSD(model) ================================================ FILE: ANOVA in R - a complete example/README.md ================================================ # ANOVA in R: a complete example []() Hi everybody! In this folder, you'll find materials supporting my vid, **ANOVA in R: a complete example**, which you can find at . ================================================ FILE: ANOVA in R - a complete example/Script - ANOVA in R - a complete example.R ================================================ library(tidyverse) library(palmerpenguins) # Does species help explain flipper length? glimpse(penguins) ggplot(penguins, aes(x = species, y = flipper_length_mm)) + geom_boxplot() ggplot(penguins, aes(x = flipper_length_mm)) + geom_histogram() + facet_wrap(~species, ncol = 1) penguins %>% group_by(species) %>% summarize(var(flipper_length_mm, na.rm = TRUE)) model <- aov(flipper_length_mm ~ species, data = penguins) summary(model) TukeyHSD(model) ================================================ FILE: Add great alt text /README.md ================================================ # Add great alt text to your data visualizations []() Hi everybody! In this folder, you'll find materials supporting my vid, **Add great alt text to your data visualizations**, which you can find at . ================================================ FILE: Add great alt text /alt text.qmd ================================================ --- title: "Writing good alt text: example" author: Andrew Gard format: html --- ```{r} #| label: setup #| message: false library(tidyverse) library(modeldata) ``` ```{r} #| fig-alt: A histogram showing the number of years survey respondents have been coding on the job. The peak is around 2 years with a large isolated spike at 20 years, the maximum value in the set. ggplot(stackoverflow, aes(x = YearsCodedJob)) + geom_histogram(binwidth = 1, color = "black") + labs(x = "Years coding on the job", y = "Frequency") + theme_minimal() ``` ```{r} #| warning: false #| fig-alt: A scatterplot showing the relationship between bill lengths and depths in antarctic penguins, colored by the three differen species. In each group, there is an upward trend, with Adelies tending to have the shortest bills. ggplot(penguins, aes(x = bill_depth_mm, y = bill_length_mm, color = species)) + geom_point() + labs(x = "Bill depth (mm)", y = "Bill depth (mm)", color = "Species") + scale_color_brewer(palette = "Dark2") + theme_minimal() ``` ================================================ FILE: All about facets/README.md ================================================ # All about facets []() Hi everybody! In this folder, you'll find materials supporting my vid, **All about facets**, which you can find at . ================================================ FILE: All about facets/script - facets.R ================================================ # All about facets library(tidyverse) library(modeldata) theme_set(theme_minimal()) # create data set set.seed(0) n <- 200 rho <- .2 m <- 2 x <- runif(n, 0, 10) y <- m *x + 5 + rnorm(n, 0, .71 * sd(x) / rho) df1 <- data.frame(x, y) rho <- .5 x <- runif(n, 0, 10) y <- m *x + 5 + rnorm(n, 0, 1 * sd(x) / rho) df2 <- data.frame(x, y) rho <- .8 x <- runif(n, 0, 10) y <- m *x + 5 + rnorm(n, 0, .79 * sd(x) / rho) df3 <- data.frame(x, y) df <- bind_rows(df1, df2, df3, .id = "set") # faceting scat p <- ggplot(scat, aes(x = d13C, y = d15N)) + geom_point() # starter plot p + facet_wrap(~Species, nrow = 3) p + facet_wrap(vars(Species)) p + facet_grid(Location~Species) my_labeller <- as_labeller(c("bobcat" = "Bobcat", "coyote" = "Coyote", "gray_fox" = "Gray Fox")) p + facet_wrap(~Species, labeller = my_labeller) # R^2 demonstration glimpse(df) ggplot(df, aes(x, y)) + geom_point(alpha = .6) + geom_smooth(method = "lm", se = FALSE) + facet_wrap(~set) df2 <- df %>% mutate(set = fct_recode(set, "R^2==0.2" = "1", "R^2==0.5" = "2", "R^2==0.8" = "3")) ggplot(df2, aes(x, y)) + geom_point(alpha = .6) + geom_smooth(method = "lm", se = FALSE) + facet_wrap(~set, labeller = "label_parsed") ggplot(df2, aes(x, y)) + geom_point(alpha = .6) + geom_smooth(method = "lm", se = FALSE, linewidth = 1.8, color = "#5798A6") + facet_wrap(~set, labeller = "label_parsed") + theme_minimal() + labs(x = NULL, y = NULL) + theme(axis.text.x=element_blank(), axis.ticks.x=element_blank(), axis.text.y=element_blank(), axis.ticks.y=element_blank(), panel.background = element_rect(fill = "#E1E1D3", color = "#E1E1D3"), plot.background = element_rect(fill = "#E1E1D3")) ================================================ FILE: All about system prompts/README.md ================================================ # All about system prompts []() Hi everybody! In this folder, you'll find materials supporting my vid, **All about system prompts**, which you can find at . ================================================ FILE: All about system prompts/script - system prompts.R ================================================ # All about system prompts library(ellmer) ?chat_anthropic # A decent all-around system prompt for coding claude <- chat_anthropic(system_prompt = "You are a helpful expert R programmer. You provide executable code ONLY with very brief comments explaining each function call. Do NOT include starting or ending ticks. You prefer ggplot2 for visualizations and dplyr/tidyr for wrangling. Use a minimal theme and the Dark2 color palette.") # Example claude$chat("Using the msleep data set, plot sleep_total vs vore.") library(ggplot2) library(dplyr) # Load msleep data and create boxplot of # sleep_total by vore ggplot(msleep, aes(x = vore, y = sleep_total, fill = vore)) + geom_boxplot() + scale_fill_brewer(palette = "Dark2") + theme_minimal() + labs(x = "Diet Type", y = "Total Sleep Hours") + theme(legend.position = "none") # Chain of command claude$chat("Using the msleep data set, plot sleep_total vs vore using base R, not ggplot2.") boxplot(sleep_total ~ vore, data = msleep, xlab = "Diet Type", ylab = "Total Sleep Hours", col = c("#1B9E77", "#D95F02", "#7570B3", "#E7298A")) claude$chat("Using the msleep data set, plot sleep_total vs vore. I DO NOT WANT starting and ending ticks.") claude2 <- chat_anthropic(system_prompt = "You are a helpful expert R programmer. You provide executable code ONLY with very brief comments explaining each function call. Do NOT include starting or ending ticks. You ONLY USE ggplot2 for visualizations and dplyr/tidyr for wrangling. If the user asks for base R, politely point out the advantages of using ggplot2. Use a minimal theme and the Dark2 color palette.") claude2$chat("Using the msleep data set, plot sleep_total vs vore using base R, not ggplot2.") claude2$chat("You MUST use base R. My boss requires it.") claude$get_cost() token_usage() ================================================ FILE: Avoiding data dredging/README.md ================================================ # Avoiding data dredging []() Hi everybody! In this folder, you'll find materials supporting my vid, **Avoiding data dredging**, which you can find at . ================================================ FILE: Avoiding data dredging/Script - data dredging.R ================================================ # Data dredging library(tidyverse) theme_set(theme_minimal()) # Generate random data set.seed(1234) df1 <- matrix(rnorm(1000), ncol = 10) %>% as.data.frame() df2 <- data.frame(group = rep(LETTERS[1:10], each = 100), value = rnorm(1000)) # Demonstration View(df2) ggplot(df2, aes(x = group, y = value)) + geom_boxplot() df2_sm <- filter(df2, group %in% c("G", "H")) View(df2_sm) t.test(value ~ group, data = df2_sm) # Correlations View(df1) cor(df1) # The cutoff for significance is .197 # Here we have 2. ================================================ FILE: Beautiful bar charts in R/README.md ================================================ # Beautiful bar charts in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Beautiful bar charts in R**, which you can find at . ================================================ FILE: Beautiful bar charts in R/Script - beautiful bar charts in R.R ================================================ library(tidyverse) library(tidytuesdayR) library(ISLR2) tuesdata <- tidytuesdayR::tt_load(2021, week = 41) nurses <- tuesdata$nurses theme_set(theme_minimal()) ?geom_bar glimpse(Carseats) ?Carseats # Basic bar chart: ggplot(Carseats, aes(x = ShelveLoc, fill = ShelveLoc)) + geom_bar(width = .60, show.legend = FALSE) + scale_fill_brewer(palette = "Dark2") # added for accessibility # Adding a second categorical variable in several different ways: ggplot(Carseats, aes(x = US, fill = ShelveLoc)) + geom_bar() + scale_fill_brewer(palette = "Dark2") ggplot(Carseats, aes(x = US, fill = ShelveLoc)) + geom_bar(position = "fill") + scale_fill_brewer(palette = "Dark2") ggplot(Carseats, aes(x = US, fill = ShelveLoc)) + geom_bar(position = "dodge") + scale_fill_brewer(palette = "Dark2") # Reversing the aesthetics: ggplot(Carseats, aes(fill = US, x = ShelveLoc)) + geom_bar(position = "dodge") + scale_fill_brewer(palette = "Dark2") # geom_col() for sets with counts: View(nurses) nurses_2020 <- nurses %>% filter(Year == 2020) View(nurses_2020) ggplot(nurses_2020, aes(y = State, x = `Total Employed RN`)) + geom_col() nurses_2020 <- nurses %>% filter(Year == 2020) %>% slice_max(order_by = `Total Employed RN`, n = 20) ggplot(nurses_2020, aes(y = fct_reorder(State, `Total Employed RN`), x = `Total Employed RN`)) + geom_col() + labs(y = "State") ================================================ FILE: Beautiful presentations/README.md ================================================ # Beautiful presentations with R and Quarto []() Hi everybody! In this folder, you'll find materials supporting my vid, **Beautiful presentations with R and Quarto**, which you can find at . ================================================ FILE: Beautiful presentations/quarto presentations.qmd ================================================ --- title: "Decision trees" author: Andrew Gard date: 25 feb 2025 format: revealjs: footer: "Equitable equations: decision trees" transition: slide title-slide-attributes: data-background-image: background.jpg --- ```{r} #| label: setup library(tidyverse) library(gt) library(readxl) theme_set(theme_minimal()) dt_example <- read_excel("dt_example.xlsx") ``` ## {background-image=background.jpg} In this vid, we’ll manually construct a decision tree classifier using the following data set. :::: {.columns} ::: {.column width="30%"} ```{r} dt_example %>% gt() ``` ::: ::: {.column width="70%"} ```{r} #| fig-height: 6 ggplot(dt_example, aes(x, y, color = color)) + geom_point(size = 7, show.legend = FALSE) + labs(x = NULL, y = NULL) + theme(axis.text = element_text(size = 15, face = "bold")) + scale_color_manual(values = c("blue", "red")) ``` ::: :::: ## {background-image=background.jpg} ::: {.callout-tip title="Decision trees"} A **decision tree classifier** applies a divide-and-conquer algorithm to the training set, recursively splitting it into pieces that are as homogeneous as possible. ::: . . . ![](tree_plot.png){fig-align=center width="75%"} ## {background-image=background.jpg} Here's how I made that plot: ```{r} #| echo: true #| fig-align: center #| code-line-numbers: "|2-3|4-5|5-8" ggplot(dt_example, aes(x, y, color = color)) + geom_point(size = 7, show.legend = FALSE) + labs(x = NULL, y = NULL) + theme(axis.text = element_text(size = 15, face = "bold")) + scale_color_manual(values = c("blue", "red")) ``` ================================================ FILE: Beautiful tables with gt/README.md ================================================ # Beautiful tables with R with the gt package []() Hi everybody! In this folder, you'll find materials supporting my vid, **Beautiful tables with R with the gt package**, which you can find at . ================================================ FILE: Beautiful tables with gt/gt tables.qmd ================================================ --- title: "Beautiful tables with gt()" author: Andrew Gard format: html --- ```{r} #| label: setup #| include: false library(gt) library(tidyverse) library(modeldata) # Data preprocessing scat_table1 <- scat %>% select(Species, Site, Length, Diameter, Mass, d13C, d15N) %>% group_by(Species) %>% summarize(across(where(is.numeric), \(x) round(mean(x, na.rm = TRUE), 1)), count = n()) scat_table2 <- scat %>% select(Species, Location, Site, Length, Diameter, Mass, d13C, d15N) %>% group_by(Species, Site) %>% summarize(across(where(is.numeric), \(x) round(mean(x, na.rm = TRUE), 1)), Count = n()) ``` ## A great table ```{r} scat_table1 %>% gt(rowname_col = "Species") %>% cols_label(count ~ "Count") %>% tab_header(title = "California poopies", subtitle = "Morphometric data on scat") %>% tab_source_note(md("**Source**: Reid, R. E. B. (2015). A morphometric modeling approach to distinguishing among bobcat, coyote and gray fox scats. *Wildlife Biology*, 21(5), 254-262")) %>% tab_spanner(label = "Physical averages", columns = Length:Mass) %>% tab_stubhead(label = "Species") ``` ## A stylized version ```{r} scat_table1 %>% gt() %>% cols_label(count ~ "Count") %>% tab_header(title = "California poopies", subtitle = "Morphometric data on scat") %>% tab_source_note(md("**Source**: Reid, R. E. B. (2015). A morphometric modeling approach to distinguishing among bobcat, coyote and gray fox scats. *Wildlife Biology*, 21(5), 254-262")) %>% tab_spanner(label = "Physical averages", columns = Length:Mass) %>% opt_stylize(style = 2, color = "blue") ``` # Grouped data ```{r} scat_table2 %>% ungroup() %>% gt(groupname_col = "Species") ``` ================================================ FILE: Better box plots with ggplot/README.md ================================================ # Better box plots in R with ggplot []() Hi everybody! In this folder, you'll find materials supporting my vid, **Better box plots in R with ggplot**, which you can find at . ================================================ FILE: Better box plots with ggplot/Script - better box plots with ggplot.R ================================================ library(tidyverse) library(modeldata) ?geom_boxplot glimpse(msleep) ggplot(msleep, aes(x = vore, y = sleep_total, fill = vore)) + geom_boxplot(show.legend = FALSE, outlier.shape = NA) + geom_jitter(width = .2) data(penguins) glimpse(penguins) ggplot(penguins, aes(x = species, y = bill_length_mm, fill = species)) + geom_violin(show.legend = FALSE) + geom_boxplot(width = .5) ================================================ FILE: Bibliographies with R and Quarto/Quarto bibliographies.qmd ================================================ --- title: "Quarto bibliographies" author: Andrew Gard format: html bibliography: my-bib.bib nocite: | @* csl: elsevier-with-titles.csl --- My reference: [@wickham2014tidy] ================================================ FILE: Bibliographies with R and Quarto/README.md ================================================ # Bibliographies with R and Quarto []() Hi everybody! In this folder, you'll find materials supporting my vid, **Bibliographies with R and Quarto**, which you can find at . ================================================ FILE: Bibliographies with R and Quarto/elsevier-with-titles.csl ================================================ ================================================ FILE: Bibliographies with R and Quarto/my-bib.bib ================================================ %% This BibTeX bibliography file was created using BibDesk. %% https://bibdesk.sourceforge.io/ %% Created for equitable_equations at 2024-03-24 13:12:36 -0500 %% Saved with string encoding Unicode (UTF-8) @article{Gard_2018, author = {Gard, Andrew}, date-added = {2024-03-24 13:12:02 -0500}, date-modified = {2024-03-24 13:12:30 -0500}, doi = {10.1080/00029890.2018.1465785}, issn = {1930-0972}, journal = {The American Mathematical Monthly}, month = aug, number = {7}, pages = {602-611}, publisher = {Informa UK Limited}, title = {The Wild Goose Chase Problem}, url = {http://dx.doi.org/10.1080/00029890.2018.1465785}, volume = {125}, year = {2018}, bdsk-file-1 = {YnBsaXN0MDDSAQIDBFxyZWxhdGl2ZVBhdGhYYm9va21hcmtfECZUaGVXaWxkR29vc2VDaGFzZVByb2JsZW1wdWJ2ZXJzaW9uLnBkZk8RBBBib29rEAQAAAAABBAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAwAABQAAAAEBAABVc2VycwAAABMAAAABAQAAZXF1aXRhYmxlX2VxdWF0aW9ucwAHAAAAAQEAAERlc2t0b3AACwAAAAEBAABRdWFydG8gYmlicwAmAAAAAQEAAFRoZVdpbGRHb29zZUNoYXNlUHJvYmxlbXB1YnZlcnNpb24ucGRmAAAUAAAAAQYAAAQAAAAUAAAAMAAAAEAAAABUAAAACAAAAAQDAADaWgAAAAAAAAgAAAAEAwAAovd7BAAAAAAIAAAABAMAAKf3ewQAAAAACAAAAAQDAABl2coEAAAAAAgAAAAEAwAAPSLLBAAAAAAUAAAAAQYAAKAAAACwAAAAwAAAANAAAADgAAAACAAAAAAEAABBxdhSMkEgqxgAAAABAgAAAQAAAAAAAAAPAAAAAAAAAAAAAAAAAAAACAAAAAQDAAADAAAAAAAAAAQAAAADAwAA9gEAAAgAAAABCQAAZmlsZTovLy8MAAAAAQEAAE1hY2ludG9zaCBIRAgAAAAEAwAAAACHETkAAAAIAAAAAAQAAEHFlk7IgAAAJAAAAAEBAAAyRTU1Mzk1Ni05OERBLTREQjAtQjBEOC1GNTQ5MjVEODg4QzgYAAAAAQIAAIEAAAABAAAA7xMAAAEAAAAAAAAAAAAAAAEAAAABAQAALwAAAAAAAAABBQAABwEAAAECAABlNWNiZTFlMWY0MTQ2NmViMzEyMTc1OTkyNjNkNzMyYTlmMWE2MmNiNDRhNTg4ZjdkN2MxN2MwZTlkM2E1NmQ5OzAwOzAwMDAwMDAwOzAwMDAwMDAwOzAwMDAwMDAwOzAwMDAwMDAwMDAwMDAwMjA7Y29tLmFwcGxlLmFwcC1zYW5kYm94LnJlYWQtd3JpdGU7MDE7MDEwMDAwMTI7MDAwMDAwMDAwNGNiMjIzZDs0MTsvdXNlcnMvZXF1aXRhYmxlX2VxdWF0aW9ucy9kZXNrdG9wL3F1YXJ0byBiaWJzL3RoZXdpbGRnb29zZWNoYXNlcHJvYmxlbXB1YnZlcnNpb24ucGRmAADMAAAA/v///wEAAAAAAAAAEAAAAAQQAACEAAAAAAAAAAUQAADwAAAAAAAAABAQAAAcAQAAAAAAAEAQAAAMAQAAAAAAAAIgAADoAQAAAAAAAAUgAABYAQAAAAAAABAgAABoAQAAAAAAABEgAACcAQAAAAAAABIgAAB8AQAAAAAAABMgAACMAQAAAAAAACAgAADIAQAAAAAAADAgAAD0AQAAAAAAAAHAAAA8AQAAAAAAABHAAAAUAAAAAAAAABLAAABMAQAAAAAAAIDwAAD8AQAAAAAAAAAIAA0AGgAjAEwAAAAAAAACAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAEYA==}} @article{wickham2014tidy, author = {Wickham, Hadley}, date-added = {2024-03-24 13:09:32 -0500}, date-modified = {2024-03-24 13:09:32 -0500}, journal = {Journal of statistical software}, pages = {1--23}, title = {Tidy data}, volume = {59}, year = {2014}} ================================================ FILE: Binning variables in R/README.md ================================================ # Binning variables in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Binning variables in R**, which you can find at . ================================================ FILE: Binning variables in R/script - binning variables.R ================================================ # binning quantitative variables in R library(tidyverse) library(readxl) theme_set(theme_minimal()) titanic <- read_excel("titanic.xlsx") View(titanic) ?cut_number ?cut # more general cut_number(titanic$age, n = 8) %>% table() titanic <- titanic %>% drop_na(age) titanic <- titanic %>% mutate(age_binned = cut_interval(age, n = 8)) count(titanic, age_binned) titanic_summary <- titanic %>% group_by(age_binned) %>% summarize(survival_rate = mean(survived), count = n()) titanic_summary ggplot(titanic_summary, aes(x = age_binned, y = survival_rate, size = count)) + geom_point() ================================================ FILE: Bivariate continuous probability distributions/README.md ================================================ # Bivariate distributions of continuous random variables []() Hi everybody! In this folder, you'll find materials supporting my vid, **Bivariate distributions of continuous random variables**, which you can find at . ================================================ FILE: Combining columns in R with unite()/README.md ================================================ # Combining columns in R with unite() []() Hi everybody! In this folder, you'll find materials supporting my vid, **Combining columns in R with unite()**, which you can find at . ================================================ FILE: Combining columns in R with unite()/unite.R ================================================ library(tidyverse) library(nycflights13) ?unite glimpse(flights) flights_ee <- flights %>% unite(date, year, month, day) glimpse(flights_ee) flights_ee <- flights %>% unite(date, year, month, day, remove = FALSE) flights_ee <- flights %>% unite(date, year, month, day, remove = FALSE, sep = "-") %>% mutate(date = as.Date(date)) ================================================ FILE: Combining data sets with left_join/README.md ================================================ # Combining data sets with left_join []() Hi everybody! In this folder, you'll find materials supporting my vid, **Combining data sets with left_join**, which you can find at . ================================================ FILE: Combining data sets with left_join/left_join.R ================================================ library(tidyverse) library(babynames) ?left_join babynames applicants left_join(babynames, appllicants) # Building the states data sets ------------------------------------------- state_geog <- data.frame(state = state.abb, area = state.area, center_long = state.center$x, center_lat = state.center$y) state_reg = data.frame(name = state.name, abbr = state.abb, region = state.region) ================================================ FILE: Combining observations with bind_rows()/README.md ================================================ # Combining observations with bind_rows []() Hi everybody! In this folder, you'll find materials supporting my vid, **Combining observations with bind_rows**, which you can find at . ================================================ FILE: Combining observations with bind_rows()/bind_rows.R ================================================ # combining sets using bind_rows library(tidyverse) ?bind_rows # construct data sets msleep1 <- data.frame(name = c("Cheetah", "Dog"), genus = c("Acinonyx", "Canis")) msleep2 <- data.frame(name = c("Cow", "Goat"), genus = c("Bos", "Capri")) msleep3 <- data.frame(Name = c("Red fox", "Mole rat"), genus = c("Vulpes", "Spalax")) msleep1 msleep2 msleep3 bind_rows(msleep1, msleep2) sleep_list <- list(msleep1, msleep2) sleep_list bind_rows(sleep_list) bind_rows(sleep_list, .id = "researcher") %>% mutate(researcher = fct_recode(researcher, "George" = "1", "Sarah" = "2")) bind_rows(msleep2, msleep3) msleep3 %>% rename("name" = "Name") %>% rbind(msleep2, msleep1) rbind(msleep2, msleep3) ================================================ FILE: Computing normal probabilities examples/README.md ================================================ # Computing normal probabilities: examples []() Hi everybody! In this folder, you'll find materials supporting my vid, **Computing normal probabilities: examples**, which you can find at . ================================================ FILE: Conditional probability distributions/README.md ================================================ # Conditional probability distributions []() Hi everybody! In this folder, you'll find materials supporting my vid, **Conditional probability distributions**, which you can find at . ================================================ FILE: Contingency tables in R/README.md ================================================ # Contingency tables in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Contingency tables in R**, which you can find at . ================================================ FILE: Contingency tables in R/Script - contingency tables.R ================================================ # Contingency tables library(ISLR2) ?table t <- table(Carseats$Urban, Carseats$ShelveLoc) str(t) dim(t) addmargins(t) dim(addmargins(t)) marginSums(t) marginSums(t, 1) marginSums(t, 2) proportions(t) proportions(t, 1) proportions(t, 2) counts <- c(1, 2, 3, 4) m <- matrix(counts, nrow = 2, byrow = TRUE) m addmargins(m) ================================================ FILE: Controlling the family-wise error rate/README.md ================================================ # Controlling the family-wise error rate []() Hi everybody! In this folder, you'll find materials supporting my vid, **Controlling the family-wise error rate**, which you can find at . ================================================ FILE: Controlling the family-wise error rate/Script - controlling the fwer.R ================================================ # Correcting for multiple testing ?p.adjust p <- c(0.005, 0.011, 0.025, 0.035, .045) p.adjust(p, method = "bonferroni") p.adjust(p, method = "holm") ================================================ FILE: Creating columns with mutate/README.md ================================================ # Creating columns in R with mutate() []() Hi everybody! In this folder, you'll find materials supporting my vid, **Creating columns in R with mutate()**, which you can find at . ================================================ FILE: Creating columns with mutate/script - mutate.R ================================================ library(tidyverse) ?mutate Islands <- data.frame(Island = names(islands), Area = islands, row.names = NULL) View(Islands) Islands <- mutate(Islands, Area_km = Area * 2.59) Islands2 <- transmute(Islands, Area_km = Area * 2.59) View(Islands2) Islands <- Islands %>% mutate(Type = "Island", Number = 1:48, Rank = rank(Area), Previous = lag(Number), Next = lead(Number)) ================================================ FILE: Cross references in R and Quarto/README.md ================================================ # Cross references in R and Quarto []() Hi everybody! In this folder, you'll find materials supporting my vid, **Cross references in R and Quarto**, which you can find at . ================================================ FILE: Cross references in R and Quarto/cross references.qmd ================================================ --- title: "Cross references" author: "Andrew Gard" number-sections: true format: html --- ```{r} #| label: setup #| include: false library(tidyverse) library(gt) ``` ## Images {#sec-im} ![My logo](rusty_logo.png){width=60% #fig-logo} Reference: @fig-logo. We can reformat how this appears. For instance [-@fig-logo] or [Figgy @fig-logo] ## Plots ```{r} #| label: fig-msleep #| warning: false #| out-width: 60% qplot(msleep$sleep_total) ``` Reference: @fig-msleep. ## Tables ```{r} #| label: tbl-msleep #| tbl-cap: Sleepy time #| echo: false msleep %>% group_by(vore) %>% summarize(Count = n(), avg_sleep = mean(sleep_total, na.rm = TRUE)) %>% gt() ``` Reference: @tbl-msleep. ## Callouts ::: {.callout-note #nte-mynote} Check out this note! ::: Reference: @nte-mynote ## Equations $$ e = mc^2 $$ {#eq-rel} Reference: @eq-rel ## Sections Reference: @sec-im ================================================ FILE: Data analysis - Billboard Hot 100/README.md ================================================ # Data analysis with R: the Billboard Hot 100 []() Hi everybody! In this folder, you'll find materials supporting my vid, **Data analysis with R: the Billboard Hot 100**, which you can find at . ================================================ FILE: Data analysis - Billboard Hot 100/Script - billboard_top_100.R ================================================ # billboard top 100 # Tidy Tuesday Sept. 14, 2021 library(tidyverse) library(tidytuesdayR) tuesdata <- tidytuesdayR::tt_load('2021-09-14') billboard <- tuesdata$billboard audio <- tuesdata$audio_features View(billboard) View(audio) # Are number one jams more cheerful, # in general? bb1 <- billboard %>% mutate(no1 = (peak_position == 1), week_id = mdy(week_id)) %>% group_by(song_id) %>% arrange(week_position, .by_group = TRUE) %>% filter(!duplicated(song_id)) %>% ungroup() %>% select(song_id, no1) songs <- bb1 %>% left_join(audio, by = "song_id") mean(is.na(songs$valence)) map_dbl(songs, \(x) mean(is.na(x))) ggplot(songs, aes(x = valence, y = no1)) + geom_boxplot() + theme_minimal() t.test(valence ~ no1, data = songs) # yes, no1 jams are more valent # however, the difference is small # How large an effect is this? # What is cohen's d? df <- songs %>% group_by(no1) %>% summarize(avg_val = mean(valence, na.rm = TRUE), var_val = var(valence, na.rm = TRUE)) pooled_sd <- sqrt(sum(df$var_val) / 2) cohens_d <- diff(df$avg_val) / pooled_sd cohens_d ================================================ FILE: Data analysis - US colleges/README.md ================================================ # Data analysis with R: US colleges []() Hi everybody! In this folder, you'll find materials supporting my vid, **Data analysis with R: US colleges**, which you can find at . ================================================ FILE: Data analysis - US colleges/Script - analyzing college data.R ================================================ library(tidyverse) library(ISLR2) # Do colleges with larger full-time enrollments # have lower graduation rates? # Is this different for public/private institutions? # If it different for more selective schools? ?College glimpse(College) # Exploratory graphics ggplot(College, aes(x = Grad.Rate)) + geom_histogram() # Note weird outlier suspicious <- filter(College, Grad.Rate >= 100) View(suspicious) ggplot(College, aes(x = log10(F.Undergrad), y = Grad.Rate)) + geom_point() college_sm <- College %>% mutate(log_full = log10(F.Undergrad)) %>% select(Grad.Rate, log_full, Private, Top25perc) View(college_sm) # Modeling ggplot(College, aes(x = log10(F.Undergrad), y = Grad.Rate)) + geom_point() + geom_smooth(method = "lm") model_undergrad <- lm(Grad.Rate ~ log_full, data = college_sm) summary(model_undergrad) plot(model_undergrad) # What about Private? ggplot(College, aes(x = log10(F.Undergrad), y = Grad.Rate, color = Private)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + scale_color_brewer(palette = "Dark2") model_private <- lm(Grad.Rate ~ Private + log_full, data = college_sm) summary(model_private) # Interaction: private and F.Undergrad model_private_int <- lm(Grad.Rate ~ Private * log_full, data = college_sm) summary(model_private_int) anova(model_private_int) # What about Top25perc? model_top <- lm(Grad.Rate ~ Private + log_full + Top25perc, data = college_sm) summary(model_top) plot(model_top) # Inset plot from YouTube thumbnail ggplot(College, aes(x = log10(F.Undergrad), y = Grad.Rate, color = Private)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + labs(x = "Full-time undergraduates (log scale)", y = "Graduation rate", color = "Private?", title = "Bigger schools, more degrees") + scale_color_brewer(palette = "Dark2") + theme_minimal() ================================================ FILE: Data analysis - age gaps and bechdel tests/README.md ================================================ # Data analysis with R: age gaps and Bechdel tests []() Hi everybody! In this folder, you'll find materials supporting my vid, **Data analysis with R: age gaps and Bechdel tests**, which you can find at . ================================================ FILE: Data analysis - age gaps and bechdel tests/script - age gaps.R ================================================ # Question: is there a correlation between age # gaps and Bechdel ratings? # For this purpose: gap = man's age - woman's age # Setup library(tidyverse) theme_set(theme_minimal()) age_gaps <- read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2023/2023-02-14/age_gaps.csv') bechdel <- read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2021/2021-03-09/raw_bechdel.csv') # Orientation View(bechdel) ggplot(bechdel, aes(x = rating)) + geom_bar() View(age_gaps) ggplot(age_gaps, aes(x = age_difference)) + geom_histogram() # Data prep age_gaps <- age_gaps %>% mutate(man_older = case_when( character_1_gender == "man" & character_2_gender == "woman" ~ actor_1_age - actor_2_age, character_2_gender == "man" & character_1_gender == "woman" ~ actor_2_age - actor_1_age )) ggplot(age_gaps, aes(x = man_older)) + geom_histogram() mean(age_gaps$man_older, na.rm = TRUE) # Join the data movies <- age_gaps %>% left_join(bechdel, by = c("movie_name" = "title", "release_year" = "year")) age_gaps$movie_name[810] # 2017 Wonder woman has 3 bechdel ratings?? bechdel %>% filter(title == "Wonder Woman") movies <- movies %>% filter(!(id %in% c(9293,9294))) # Are there others? bechdel %>% count(title, year) %>% filter(n > 1) # Visualization: age gap and bechdel rating movies <- movies %>% mutate(rating_cat = as.factor(rating)) %>% drop_na(man_older, rating) ggplot(movies, aes(x = rating_cat, y = man_older)) + geom_boxplot(outlier.shape = NA) + geom_jitter(alpha = .2) + scale_x_discrete(labels = c("Fail", "No conversation", "Only about men", "Pass")) + labs(x = "Bechdel test result", y = "Male age gap", title = "Something to talk about") # Correlation cor(movies$man_older, movies$rating) cor(movies$man_older, movies$rating, method = "spearman") # Testing model <- lm(man_older ~ rating_cat, data = movies) summary(model) ================================================ FILE: Data analysis - floristic quality/README.md ================================================ # Data analysis with R: floristic quality []() Hi everybody! In this folder, you'll find materials supporting my vid, **Data analysis with R: floristic quality**, which you can find at . ================================================ FILE: Data analysis - floristic quality/Script - floristic quality data.R ================================================ # Student floristic quality data analysis # Question: were the C-values of the 4 transects different from one another? library(tidyverse) library(here) library(readxl) library(janitor) file1 <- here("student floristic quality data", "lfc_fqa_team1.xlsx") file2 <- here("student floristic quality data", "lfc_fqa_team2.xlsx") file3 <- here("student floristic quality data", "lfc_fqa_team3.xlsx") team1 <- read_excel(file1) team2 <- read_excel(file2) team3 <- read_excel(file3) view(team1) view(team2) view(team3) fqa_data <- rbind(team1, team2, team3) view(fqa_data) fqa_data <- fqa_data |> filter(!is.na(species_name)) |> fill(team:plot_number) |> clean_names() fqa_data_tidier <- fqa_data |> mutate(c = case_when(c == "NN" ~ "nn", c == "NA" ~ NA_character_, TRUE ~ c )) view(fqa_data_tidier) fqa_data_tidier |> count(c) fqa_data_tidier <- fqa_data_tidier |> mutate(c = as.numeric(c)) |> filter(!is.na(c)) ggplot(fqa_data_tidier, aes(x = c)) + geom_bar() + scale_x_continuous(breaks = seq(from = 0, to = 10, by = 2)) + theme_minimal() # How do c-values compare across sites? fqa_data_tidier |> count(transect_name) fqa_data_tidier <- fqa_data_tidier |> mutate(transect_name = case_when(transect_name == "Prarie" ~ "Prairie", transect_name == "Reverie Prairie"~ "Prairie", transect_name == "Savannah" ~ "Savanna", transect_name == "Shooting Star Ravine" ~ "Ravine", transect_name == "Shooting Star Savanna" ~ "Savanna", transect_name == "Wetland Restoration" ~ "Wetland", transect_name == "Wetlands" ~ "Wetland", TRUE ~ .data$transect_name )) fqa_data_tidier |> group_by(transect_name) |> summarize(mean_c = mean(c), sd_c = sd(c), count = n()) |> arrange(-mean_c) # A visualization ggplot(fqa_data_tidier, aes(x = transect_name, y = c)) + geom_boxplot() + geom_jitter(width = .2) + theme_minimal() model <- aov(c ~ transect_name, data = fqa_data_tidier) summary(model) ggplot(fqa_data_tidier, aes(x = transect_name, y = c)) + geom_jitter(width = .2) + theme_minimal() ================================================ FILE: Data analysis - scooby doo/README.md ================================================ # Data analysis with R: Scooby Doo []() Hi everybody! In this folder, you'll find materials supporting my vid, **Data analysis with R: Scooby Doo**, which you can find at . ================================================ FILE: Data analysis - scooby doo/script - analyzing scooby doo.R ================================================ # Scooby dooby doo! library(tidyverse) theme_set(theme_minimal()) library(tidytuesdayR) tuesdata <- tidytuesdayR::tt_load('2021-07-13') scooby <- tuesdata$scoobydoo glimpse(scooby) scooby_sm <- scooby |> select(series_name:format) |> mutate(imdb = as.double(imdb)) # A preliminary visualization of imdb ratings over time ggplot(scooby_sm, aes(x = date_aired, y = imdb, color = format)) + geom_point() + scale_color_brewer(palette = "Dark2") # Exploring format table(scooby_sm$format) crossover <- filter(scooby_sm, format == "Crossover") View(crossover) # Let's filter all non-TV series episodes scooby_sm <- scooby_sm |> filter(format != "Crossover", format != "Movie", format != "Movie (Theatrical)") table(scooby_sm$format) View(scooby_sm) # Let's combine the segmented episodes for the purposes # of considering imdb ratings. segmented <- scooby_sm |> filter(format == "TV Series (segmented)") |> group_by(date_aired) |> summarize(imdb = mean(imdb), network = unique(network), series_name = unique(series_name), total_runtime = sum(run_time)) View(segmented) non_seg <- scooby_sm |> filter(format != "TV Series (segmented)") |> select(date_aired, imdb, network, series_name, total_runtime = run_time) scooby_tidied <- rbind(non_seg, segmented) View(scooby_tidied) # A new ggplot: ggplot(scooby_tidied, aes(x = date_aired, y = imdb, col = network)) + geom_point() + scale_color_brewer(palette = "Dark2") cw <- scooby_tidied |> filter(network == "The CW") View(cw) # Does network inform imdb? Is The CW really so bad? model <- aov(imdb ~ network, data = scooby_tidied) summary(model) TukeyHSD(model) # Yep. The CW was bad. # Let's get an awesome bar chart for average imdb ratings # for the various networks. scooby_tidied |> group_by(network) |> summarize(mean_imdb = mean(imdb, na.rm = TRUE)) |> ggplot(aes(x = fct_reorder(network, -mean_imdb), y = mean_imdb, fill = network)) + geom_col() + geom_text(aes(label = round(mean_imdb, 1)), nudge_y = .3) + scale_fill_brewer(palette = "Dark2") + labs(x = "Network", y = "Mean imdb rating", title = "Scooby dooby doo!") + theme(legend.position = "none", axis.text.x = element_text(angle = 15)) ================================================ FILE: Data visualization in 36 minutes/README.md ================================================ # Data visualization with R in 36 minutes []() Hi everybody! In this folder, you'll find materials supporting my vid, **Data visualization with R in 36 minutes**, which you can find at . ================================================ FILE: Data visualization in 36 minutes/Script - dataviz.R ================================================ library(tidyverse) library(modeldata) ?ggplot ?crickets View(crickets) # The basics ggplot(crickets, aes(x = temp, y = rate)) + geom_point() + labs(x = "Temperature", y = "Chirp rate", title = "Cricket chirps", caption = "Source: McDonald (2009)") ggplot(crickets, aes(x = temp, y = rate, color = species)) + geom_point() + labs(x = "Temperature", y = "Chirp rate", color = "Species", title = "Cricket chirps", caption = "Source: McDonald (2009)") + scale_color_brewer(palette = "Dark2") # Modifiying basic properties of the plot ggplot(crickets, aes(x = temp, y = rate)) + geom_point(color = "red", size = 2, alpha = .3, shape = "square") + labs(x = "Temperature", y = "Chirp rate", title = "Cricket chirps", caption = "Source: McDonald (2009)") # Learn more about the options for the geom_abline() # with ?geom_point # Adding another layer ggplot(crickets, aes(x = temp, y = rate)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + labs(x = "Temperature", y = "Chirp rate", title = "Cricket chirps", caption = "Source: McDonald (2009)") ggplot(crickets, aes(x = temp, y = rate, color = species)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + labs(x = "Temperature", y = "Chirp rate", color = "Species", title = "Cricket chirps", caption = "Source: McDonald (2009)") + scale_color_brewer(palette = "Dark2") # Other plots ggplot(crickets, aes(x = rate)) + geom_histogram(bins = 15) # one quantitative variable ggplot(crickets, aes(x = rate)) + geom_freqpoly(bins = 15) ggplot(crickets, aes(x = species)) + geom_bar(color = "black", fill = "lightblue") ggplot(crickets, aes(x = species, fill = species)) + geom_bar(show.legend = FALSE) + scale_fill_brewer(palette = "Dark2") ggplot(crickets, aes(x = species, y = rate, color = species)) + geom_boxplot(show.legend = FALSE) + scale_color_brewer(palette = "Dark2") + theme_minimal() ?theme_minimal() # faceting # not great: ggplot(crickets, aes(x = rate, fill = species)) + geom_histogram(bins = 15) + scale_fill_brewer(palette = "Dark2") ggplot(crickets, aes(x = rate, fill = species)) + geom_histogram(bins = 15, show.legend = FALSE) + facet_wrap(~species) + scale_fill_brewer(palette = "Dark2") ?facet_wrap ggplot(crickets, aes(x = rate, fill = species)) + geom_histogram(bins = 15, show.legend = FALSE) + facet_wrap(~species, ncol = 1) + scale_fill_brewer(palette = "Dark2") + theme_minimal() ================================================ FILE: Data wrangling with R/README.md ================================================ # Data wrangling with R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Data wrangling with R**, which you can find at . ================================================ FILE: Data wrangling with R/script - data wrangling.R ================================================ # Data wrangling with tidyverse R # install.packages("tidyverse") only need to do once library(tidyverse) ?diamonds # subset by row with filter() --------------------------------------------- ?filter diamonds_sm <- filter(diamonds, cut == "Ideal") diamonds_sm <- filter(diamonds, price > 10000) View(diamonds_sm) diamonds_sm <- filter(diamonds, cut == "Ideal", price > 10000) diamonds_sm <- filter(diamonds, cut == "Ideal" | price > 10000) # filter for missing values using is.na or !is.na # subset by column with select() ------------------------------------------ ?select diamonds_sm <- select(diamonds, color, cut) View(diamonds_sm) diamonds_sm <- select(diamonds, 1:4) diamonds_sm <- select(diamonds, starts_with("c")) diamonds_sm <- select(diamonds, contains("c")) diamonds_sm <- select(diamonds, price, everything()) diamonds_sm <- select(diamonds, -price) # using the pipe diamonds_sm <- diamonds %>% select(-price) # reorder rows with arrange() --------------------------------------------- diamonds_arr <- diamonds %>% arrange(color) View(diamonds_arr) diamonds_arr <- diamonds %>% arrange(carat) diamonds_arr <- diamonds %>% arrange(color, carat) diamonds_arr <- diamonds %>% arrange(carat, color) diamonds_arr <- diamonds %>% arrange(desc(carat)) View(diamonds_arr) glimpse(diamonds_arr) # add or modify columns with mutate() ------------------------------------- diamonds_new <- diamonds %>% mutate(mass_g = .20 * carat) glimpse(diamonds_new) diamonds_new <- diamonds %>% mutate(mass_g = .20 * carat, price_per_carat = price / carat) glimpse(diamonds_new) diamonds_new <- diamonds %>% mutate(mass_g = .20 * carat, price_per_carat = price / carat, cut = tolower(cut)) glimpse(diamonds_new) diamonds_new <- diamonds %>% mutate(mass_g = .20 * carat, price_per_carat = price / carat, cut = tolower(cut), expensive_TF = price > 10000) glimpse(diamonds_new) # other smaller verbs ----------------------------------------------------- ?slice_max ?bind_rows ?left_join ?rename ?case_when # grouped summaries with group_by() and summarize() ----------------------- diamonds %>% group_by(cut) %>% summarize(mean(price)) diamonds %>% group_by(cut) %>% summarize(avg_price = mean(price), sd_price = sd(price)) diamonds %>% group_by(cut, color) %>% summarize(avg_price = mean(price), sd_price = sd(price), count = n()) diamonds %>% count(cut, color) # counts only. diamonds %>% group_by(price > 10000) %>% summarize(avg_price = mean(price), sd_price = sd(price), count = n()) diamonds %>% group_by(expensive = price > 10000) %>% summarize(avg_price = mean(price), sd_price = sd(price), count = n()) ================================================ FILE: Deviance in logistic regression/README.md ================================================ # Deviance in logistic regression models []() Hi everybody! In this folder, you'll find materials supporting my vid, **Deviance in logistic regression models**, which you can find at . ================================================ FILE: Deviance in logistic regression/script - deviance in log models.R ================================================ library(tidyverse) iris <- iris %>% mutate(setosa = as.integer(Species == "setosa")) ggplot(iris, aes(x = Sepal.Length, y = setosa)) + geom_jitter(height = .05, alpha = .4) + geom_smooth(method = "glm", se = FALSE, method.args = list(family = "binomial")) model <- glm(setosa ~ Sepal.Length, data = iris, family = "binomial") summary(model) -2 * (50 * log(1/3) + 100 * log(2/3)) p_hat <- fitted.values(model, type = "response") p_hat -2 * (sum(log(p_hat[1:50])) + sum(log(1 - p_hat[51:150]))) ================================================ FILE: Discrete bivariate distributions/README.md ================================================ # Discrete bivariate distributions []() Hi everybody! In this folder, you'll find materials supporting my vid, **Discrete bivariate distributions**, which you can find at . ================================================ FILE: Du Bois challenge plate 25/README.md ================================================ # Dataviz with R: the Du Bois challenge []() Hi everybody! In this folder, you'll find materials supporting my vid, **Dataviz with R: the Du Bois challenge**, which you can find at . ================================================ FILE: Du Bois challenge plate 25/camcorder_code.R ================================================ library(tidyverse) library(camcorder) gg_record( "dubois gif", device = "png", width = 5, height = 6, units = "in", dpi = 300, bg = "white" ) data <- data.frame(value = c(1434975, 1322694, 1173624, 736170, 498532, 21186), color = c("#dc143c", "#e5e5e5", "#ffd700", "#7e7683", "#4682b4", "#ffc0cb"), label = c("1899---$ 1,434,975 ", "1895---$ 1,322,694 ", "1890---$ 1,173,624 ", "1885---$ 736,170 ", "1880---$ 498,532 ", "1875---$ 21,186 ")) # Bar charts -------------------------------------------------------------- # Super basic ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y") # Add color palette ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y") + scale_fill_manual(values = data$color) # Fix ordering of labels data <- data %>% mutate(label = fct_reorder(label, 1:6)) # Add boundaries ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y", linewidth = .1, color = "black") + scale_fill_manual(values = data$color) # Radial plot ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y", linewidth = .1, color = "black") + scale_fill_manual(values = data$color) + coord_radial() + theme_void() # Angled bar chart -------------------------------------------------------- # add columns to data set with coordinates of vertices m <- -6/(2*pi) # slope wrt theta data <- data %>% mutate(theta = (value/max(value)) * (15/8) * (2*pi), y_ll = 20:25, y_ul = 21:26, y_ur = y_ul + m * theta, y_lr = y_ll + m * theta, x_ll = rep(0, times = 6), x_ul = rep(0, times = 6), x_ur = theta, x_lr = theta) bar_data <- data %>% pivot_longer(cols = contains("_"), names_to = c(".value", "vertex"), names_sep = "_") # Super basic ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon() # Preview of radial version ggplot(bar_data, aes(x, y, fill = label)) + geom_polygon() + coord_radial() ggplot(bar_data, aes(x, y, fill = label)) + geom_polygon() + coord_radial(end = 15*pi/4) + theme_void() # fix colors and improve overall look ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + scale_fill_manual(values = data$color) # Add labels ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + scale_fill_manual(values = data$color) # preview radial version ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + scale_fill_manual(values = data$color) + coord_radial(end = 15*pi/4) + theme_void() # Beautification ---------------------------------------------------------- # need y-axis ranging from 0 to 26 ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_fill_manual(values = data$color) # radial version ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_fill_manual(values = data$color) + coord_radial(end = 15*pi/4) + theme_void() # start plot on y-axis ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = 0, end = 15*pi/4) + theme_void() # Small rotation correction, remove legend ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + theme_void() # title and background color ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + labs(title = "ASSESSED VALUE OF HOUSEHOLD AND KITCHEN FURNITURE \n OWNED BY GEORGIA NEGROES") + theme_void() + theme(plot.background = element_rect(fill = "#f9f1e7")) # center and bold title ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + labs(title = "ASSESSED VALUE OF HOUSEHOLD AND KITCHEN FURNITURE \n OWNED BY GEORGIA NEGROES") + theme_void() + theme(plot.background = element_rect(fill = "#f9f1e7")) + theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 9)) # change font (final for now) ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + labs(title = "ASSESSED VALUE OF HOUSEHOLD AND KITCHEN FURNITURE \n OWNED BY GEORGIA NEGROES") + theme_void() + theme(plot.background = element_rect(fill = "#f9f1e7")) + theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 9), text = element_text(family = "Charter")) gg_playback( first_image_duration = 4, last_image_duration = 3, frame_duration = .6, image_resize = 800 ) ================================================ FILE: Du Bois challenge plate 25/du bois script.R ================================================ # W.E.B. Du Bois data portraits plate 25 # Ref: Battle-Baptiste and Rusert (book) # Ref: AJ Starks (style guide) library(tidyverse) data <- data.frame(value = c(1434975, 1322694, 1173624, 736170, 498532, 21186), color = c("#dc143c", "#e5e5e5", "#ffd700", "#7e7683", "#4682b4", "#ffc0cb"), label = c("1899---$ 1,434,975 ", "1895---$ 1,322,694 ", "1890---$ 1,173,624 ", "1885---$ 736,170 ", "1880---$ 498,532 ", "1875---$ 21,186 ")) # Bar charts -------------------------------------------------------------- # Super basic ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y") # Add color palette ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y") + scale_fill_manual(values = data$color) # Fix ordering of labels data <- data %>% mutate(label = fct_reorder(label, 1:6)) # Add boundaries ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y", linewidth = .1, color = "black") + scale_fill_manual(values = data$color) # Radial plot ggplot(data, aes(y = label, x = value, fill = label)) + geom_col(width = 1, orientation = "y", linewidth = .1, color = "black") + scale_fill_manual(values = data$color) + coord_radial() + theme_void() # Angled bar chart -------------------------------------------------------- # add columns to data set with coordinates of vertices m <- -6/(2*pi) # slope wrt theta data <- data %>% mutate(theta = (value/max(value)) * (15/8) * (2*pi), y_ll = 20:25, y_ul = 21:26, y_ur = y_ul + m * theta, y_lr = y_ll + m * theta, x_ll = rep(0, times = 6), x_ul = rep(0, times = 6), x_ur = theta, x_lr = theta) bar_data <- data %>% pivot_longer(cols = contains("_"), names_to = c(".value", "vertex"), names_sep = "_") # Super basic ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon() # Preview of radial version ggplot(bar_data, aes(x, y, fill = label)) + geom_polygon() + coord_radial() ggplot(bar_data, aes(x, y, fill = label)) + geom_polygon() + coord_radial(end = 15*pi/4) + theme_void() # fix colors and improve overall look ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + scale_fill_manual(values = data$color) # Add labels ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + scale_fill_manual(values = data$color) # preview radial version ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + scale_fill_manual(values = data$color) + coord_radial(end = 15*pi/4) + theme_void() # Beautification ---------------------------------------------------------- # need y-axis ranging from 0 to 26 ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_fill_manual(values = data$color) # radial version ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_fill_manual(values = data$color) + coord_radial(end = 15*pi/4) + theme_void() # start plot on y-axis ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = 0, end = 15*pi/4) + theme_void() # Small rotation correction, remove legend ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + theme_void() # title and background color ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + labs(title = "ASSESSED VALUE OF HOUSEHOLD AND KITCHEN FURNITURE \n OWNED BY GEORGIA NEGROES") + theme_void() + theme(plot.background = element_rect(fill = "#f9f1e7")) # center and bold title ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + labs(title = "ASSESSED VALUE OF HOUSEHOLD AND KITCHEN FURNITURE \n OWNED BY GEORGIA NEGROES") + theme_void() + theme(plot.background = element_rect(fill = "#f9f1e7")) + theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 9)) # change font (final for now) ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 2) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + labs(title = "ASSESSED VALUE OF HOUSEHOLD AND KITCHEN FURNITURE \n OWNED BY GEORGIA NEGROES") + theme_void() + theme(plot.background = element_rect(fill = "#f9f1e7")) + theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 9), text = element_text(family = "Charter")) # For export -------------------------------------------------------------- ggplot(bar_data, aes(x = x, y = y, fill = label)) + geom_polygon(color = "black", linewidth = .1, show.legend = FALSE) + geom_text(data = data, aes(x = 0, y = y_ll + 0.5, label = label), hjust = "right", size = 10) + ylim(c(0, 26)) + scale_x_continuous(expand = c(0,0)) + scale_fill_manual(values = data$color) + coord_radial(start = .02, end = 15*pi/4) + labs(title = "ASSESSED VALUE OF HOUSEHOLD AND KITCHEN FURNITURE \n OWNED BY GEORGIA NEGROES") + theme_void() + theme(plot.background = element_rect(fill = "#f9f1e7")) + theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 50), text = element_text(family = "Charter")) ggsave("dubois25_gard.png", width = 22, height = 24, bg = "white") ================================================ FILE: Essential R tools for regression modeling/README.md ================================================ # Essential R tools for regression modeling []() Hi everybody! In this folder, you'll find materials supporting my vid, **Essential R tools for regression modeling**, which you can find at . ================================================ FILE: Essential R tools for regression modeling/broom.R ================================================ # See https://github.com/equitable-equations/youtube # for analysis of the College data set. # Preliminaries: library(tidyverse) library(ISLR2) library(broom) college_sm <- College %>% mutate(log_full = log(F.Undergrad)) %>% select(Grad.Rate, log_full, Private, Top25perc) # Build the model: model_top <- lm(Grad.Rate ~ log_full + Private + Top25perc, data = college_sm) # Summarize the model: summary(model_top) # Functions from broom: tidy(model_top) model_aug <- augment(model_top) View(model_aug) model_glance <- glance(model_top) View(model_glance) ================================================ FILE: Gamma distribution/README.md ================================================ # The gamma distribution []() Hi everybody! In this folder, you'll find materials supporting my vid, **The gamma distribution**, which you can find at . ================================================ FILE: Gamma distribution in R/README.md ================================================ # The gamma distribution in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **The gamma distribution in R**, which you can find at . ================================================ FILE: Gamma distribution in R/Script - the gamma distribution in R.R ================================================ 1 - pgamma(60, 25, 1/3) 1 - pgamma(60, 25, scale = 3) qgamma(.95, 5, 1/3) times <- rgamma(1000, 5, 1/3) times # your results may be different here. library(tidyverse) qplot(times, bins = 25, xlab = "Waiting times") + geom_vline(xintercept = 27.46) ================================================ FILE: Getting started with R/README.md ================================================ # Getting started with R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Getting started with R**, which you can find at . ================================================ FILE: Getting started with R/amy.csv ================================================ artist_name,artist_id,album_id,album_type,album_images,album_release_date,album_release_year,album_release_date_precision,danceability,energy,key,loudness,mode,speechiness,acousticness,instrumentalness,liveness,valence,tempo,track_id,analysis_url,time_signature,artists,available_markets,disc_number,duration_ms,explicit,track_href,is_local,track_name,track_preview_url,track_number,type,track_uri,external_urls.spotify,album_name,key_name,mode_name,key_mode Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.782,0.506,9,-8.184,0,0.129,0.317,5.58e-5,0.979,0.748,91.075,7op4mx4y4ON4qT7pZnNM7u,https://api.spotify.com/v1/audio-analysis/7op4mx4y4ON4qT7pZnNM7u,4,,,1,230573,FALSE,https://api.spotify.com/v1/tracks/7op4mx4y4ON4qT7pZnNM7u,FALSE,Stronger Than Me - Live On Later... With Jools Holland / 2003,NA,1,track,spotify:track:7op4mx4y4ON4qT7pZnNM7u,https://open.spotify.com/track/7op4mx4y4ON4qT7pZnNM7u,At The BBC,A,minor,A minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.443,0.584,1,-5.89,0,0.0595,0.444,0,0.978,0.316,107.168,4PnPQJmXamSFwxoamRuIae,https://api.spotify.com/v1/audio-analysis/4PnPQJmXamSFwxoamRuIae,4,,,1,230480,FALSE,https://api.spotify.com/v1/tracks/4PnPQJmXamSFwxoamRuIae,FALSE,Take The Box - Live From The Mercury Prize Awards / 2004,NA,2,track,spotify:track:4PnPQJmXamSFwxoamRuIae,https://open.spotify.com/track/4PnPQJmXamSFwxoamRuIae,At The BBC,C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.454,0.326,5,-9.172,0,0.0384,0.721,0,0.981,0.553,102.492,1U0cCrP1EhDFlmB6CTRh5O,https://api.spotify.com/v1/audio-analysis/1U0cCrP1EhDFlmB6CTRh5O,3,,,1,198080,FALSE,https://api.spotify.com/v1/tracks/1U0cCrP1EhDFlmB6CTRh5O,FALSE,Teach Me Tonight - Live On Jools Holland Hootenanny / 2004,NA,3,track,spotify:track:1U0cCrP1EhDFlmB6CTRh5O,https://open.spotify.com/track/1U0cCrP1EhDFlmB6CTRh5O,At The BBC,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.509,0.759,0,-7.17,1,0.0982,0.292,4.05e-6,0.71,0.567,144.61,7dBVgA43mdpWAxeoc4nx2O,https://api.spotify.com/v1/audio-analysis/7dBVgA43mdpWAxeoc4nx2O,4,,,1,225080,FALSE,https://api.spotify.com/v1/tracks/7dBVgA43mdpWAxeoc4nx2O,FALSE,Rehab - Live On Later... With Jools Holland / 2006,NA,4,track,spotify:track:7dBVgA43mdpWAxeoc4nx2O,https://open.spotify.com/track/7dBVgA43mdpWAxeoc4nx2O,At The BBC,C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.5,0.691,0,-10.17,1,0.317,0.915,0.00127,0.962,0.886,60.105,2RtYWELB3znKy86yd9VTfI,https://api.spotify.com/v1/audio-analysis/2RtYWELB3znKy86yd9VTfI,3,,,1,73693,FALSE,https://api.spotify.com/v1/tracks/2RtYWELB3znKy86yd9VTfI,FALSE,Tenderly - Live On Later... With Jools Holland / 2006,NA,5,track,spotify:track:2RtYWELB3znKy86yd9VTfI,https://open.spotify.com/track/2RtYWELB3znKy86yd9VTfI,At The BBC,C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.458,0.857,1,-6.863,0,0.296,0.469,0,0.973,0.659,120.509,6p5rDpiFAwFqopcLP1cXIn,https://api.spotify.com/v1/audio-analysis/6p5rDpiFAwFqopcLP1cXIn,4,,,1,204506,FALSE,https://api.spotify.com/v1/tracks/6p5rDpiFAwFqopcLP1cXIn,FALSE,Tears Dry On Their Own - Live On Later... With Jools Holland / 2006,NA,6,track,spotify:track:6p5rDpiFAwFqopcLP1cXIn,https://open.spotify.com/track/6p5rDpiFAwFqopcLP1cXIn,At The BBC,C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.663,0.871,10,-6.598,1,0.098,0.453,8.38e-4,0.973,0.926,135.228,11RwX2XrkrduAwdmug89ja,https://api.spotify.com/v1/audio-analysis/11RwX2XrkrduAwdmug89ja,4,,,1,199760,FALSE,https://api.spotify.com/v1/tracks/11RwX2XrkrduAwdmug89ja,FALSE,Monkey Man - Live On Jools Holland Hootenanny / 2006,NA,7,track,spotify:track:11RwX2XrkrduAwdmug89ja,https://open.spotify.com/track/11RwX2XrkrduAwdmug89ja,At The BBC,A#,major,A# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.593,0.667,6,-7.266,0,0.0402,0.569,1.56e-5,0.974,0.63,113.781,5kB7BZY3dJJtQYiXkyesrD,https://api.spotify.com/v1/audio-analysis/5kB7BZY3dJJtQYiXkyesrD,4,,,1,234066,FALSE,https://api.spotify.com/v1/tracks/5kB7BZY3dJJtQYiXkyesrD,FALSE,I Heard It Through The Grapevine - Live On Jools Holland Hootenanny / 2006,NA,8,track,spotify:track:5kB7BZY3dJJtQYiXkyesrD,https://open.spotify.com/track/5kB7BZY3dJJtQYiXkyesrD,At The BBC,F#,minor,F# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.317,0.517,10,-7.921,1,0.0589,0.331,4.25e-5,0.984,0.342,99.59,3kt92YozPwnpnE5yQziJ60,https://api.spotify.com/v1/audio-analysis/3kt92YozPwnpnE5yQziJ60,4,,,1,276080,FALSE,https://api.spotify.com/v1/tracks/3kt92YozPwnpnE5yQziJ60,FALSE,Don't Go To Strangers - Live On Jools Holland Hootenanny / 2006,NA,9,track,spotify:track:3kt92YozPwnpnE5yQziJ60,https://open.spotify.com/track/3kt92YozPwnpnE5yQziJ60,At The BBC,A#,major,A# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.398,0.155,0,-11.058,1,0.0417,0.945,9.51e-5,0.717,0.24,178.489,3dqHcjkKozhNqz6E4lK6bC,https://api.spotify.com/v1/audio-analysis/3dqHcjkKozhNqz6E4lK6bC,4,,,1,154893,FALSE,https://api.spotify.com/v1/tracks/3dqHcjkKozhNqz6E4lK6bC,FALSE,Love Is A Losing Game - Live From The Mercury Prize Awards / 2007,NA,10,track,spotify:track:3dqHcjkKozhNqz6E4lK6bC,https://open.spotify.com/track/3dqHcjkKozhNqz6E4lK6bC,At The BBC,C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.556,0.696,5,-6.983,0,0.124,0.0954,6.19e-6,0.627,0.547,144.993,3NiKAPhnUU2OW9idi7xBRu,https://api.spotify.com/v1/audio-analysis/3NiKAPhnUU2OW9idi7xBRu,4,,,2,235266,FALSE,https://api.spotify.com/v1/tracks/3NiKAPhnUU2OW9idi7xBRu,FALSE,Know You Now - Live At The Leicester Summer Sundae / 2004,NA,1,track,spotify:track:3NiKAPhnUU2OW9idi7xBRu,https://open.spotify.com/track/3NiKAPhnUU2OW9idi7xBRu,At The BBC,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.423,0.533,2,-7.525,1,0.191,0.447,0,0.981,0.49,202.006,6qBNpIyUFTEG1CkODQsc9x,https://api.spotify.com/v1/audio-analysis/6qBNpIyUFTEG1CkODQsc9x,4,,,2,221560,FALSE,https://api.spotify.com/v1/tracks/6qBNpIyUFTEG1CkODQsc9x,FALSE,Fuck Me Pumps - Live From T In The Park / 2004,NA,2,track,spotify:track:6qBNpIyUFTEG1CkODQsc9x,https://open.spotify.com/track/6qBNpIyUFTEG1CkODQsc9x,At The BBC,D,major,D major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.574,0.7,10,-4.965,0,0.06,0.282,7.7e-6,0.686,0.728,98.053,2gFsfv8A295IgWxcf6ELNG,https://api.spotify.com/v1/audio-analysis/2gFsfv8A295IgWxcf6ELNG,4,,,2,277773,FALSE,https://api.spotify.com/v1/tracks/2gFsfv8A295IgWxcf6ELNG,FALSE,In My Bed - Live From T In The Park / 2004,NA,3,track,spotify:track:2gFsfv8A295IgWxcf6ELNG,https://open.spotify.com/track/2gFsfv8A295IgWxcf6ELNG,At The BBC,A#,minor,A# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.539,0.756,7,-5.194,1,0.248,0.242,0,0.905,0.571,99.986,14JgmDzPjbmaUY3pkQFdWX,https://api.spotify.com/v1/audio-analysis/14JgmDzPjbmaUY3pkQFdWX,4,,,2,221986,FALSE,https://api.spotify.com/v1/tracks/14JgmDzPjbmaUY3pkQFdWX,FALSE,October Song - Live From T In The Park / 2004,NA,4,track,spotify:track:14JgmDzPjbmaUY3pkQFdWX,https://open.spotify.com/track/14JgmDzPjbmaUY3pkQFdWX,At The BBC,G,major,G major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.591,0.635,5,-7.25,1,0.178,0.242,0,0.506,0.488,138.12,6T5wYCaa6wmaAsAPlDNPNv,https://api.spotify.com/v1/audio-analysis/6T5wYCaa6wmaAsAPlDNPNv,4,,,2,238040,FALSE,https://api.spotify.com/v1/tracks/6T5wYCaa6wmaAsAPlDNPNv,FALSE,"Rehab - Live Pete Mitchell, BBC Radio Session / 2006",NA,5,track,spotify:track:6T5wYCaa6wmaAsAPlDNPNv,https://open.spotify.com/track/6T5wYCaa6wmaAsAPlDNPNv,At The BBC,F,major,F major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.755,0.37,2,-6.787,0,0.0698,0.825,1.34e-4,0.0664,0.598,103.956,41kB3pCfmjTFEzUYsIWzI7,https://api.spotify.com/v1/audio-analysis/41kB3pCfmjTFEzUYsIWzI7,4,,,2,206906,FALSE,https://api.spotify.com/v1/tracks/41kB3pCfmjTFEzUYsIWzI7,FALSE,"You Know I'm No Good - Live Jo Whiley, BBC Live Lounge Session / 2007",NA,6,track,spotify:track:41kB3pCfmjTFEzUYsIWzI7,https://open.spotify.com/track/41kB3pCfmjTFEzUYsIWzI7,At The BBC,D,minor,D minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.496,0.708,9,-6.844,1,0.0413,0.398,1.22e-4,0.881,0.648,104.12,2g6qGfcMKlv1KLn1Ia4Nw7,https://api.spotify.com/v1/audio-analysis/2g6qGfcMKlv1KLn1Ia4Nw7,4,,,2,197360,FALSE,https://api.spotify.com/v1/tracks/2g6qGfcMKlv1KLn1Ia4Nw7,FALSE,Just Friends - Live BBC Radio 2 Big Band Special / 2009,NA,7,track,spotify:track:2g6qGfcMKlv1KLn1Ia4Nw7,https://open.spotify.com/track/2g6qGfcMKlv1KLn1Ia4Nw7,At The BBC,A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.508,0.506,0,-6.69,1,0.0482,0.516,2.74e-4,0.702,0.393,159.831,04oBXjVazNa2K9v7cwUTNj,https://api.spotify.com/v1/audio-analysis/04oBXjVazNa2K9v7cwUTNj,4,,,2,169746,FALSE,https://api.spotify.com/v1/tracks/04oBXjVazNa2K9v7cwUTNj,FALSE,Love Is A Losing Game - Live On Later... With Jools Holland / 2009,NA,8,track,spotify:track:04oBXjVazNa2K9v7cwUTNj,https://open.spotify.com/track/04oBXjVazNa2K9v7cwUTNj,At The BBC,C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.611,0.587,1,-6.203,0,0.0333,0.433,4.51e-6,0.112,0.649,119.732,6GY7yKOI1ZTpXk6xSnjzUK,https://api.spotify.com/v1/audio-analysis/6GY7yKOI1ZTpXk6xSnjzUK,4,,,2,191186,FALSE,https://api.spotify.com/v1/tracks/6GY7yKOI1ZTpXk6xSnjzUK,FALSE,"Tears Dry On Their Own - Live Jo Whiley, BBC Live Lounge Session / 2007",NA,9,track,spotify:track:6GY7yKOI1ZTpXk6xSnjzUK,https://open.spotify.com/track/6GY7yKOI1ZTpXk6xSnjzUK,At The BBC,C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.546,0.709,11,-6.557,1,0.0931,0.181,0,0.915,0.582,97.258,4vyL8RX03QfBRBs9dMUHxX,https://api.spotify.com/v1/audio-analysis/4vyL8RX03QfBRBs9dMUHxX,4,,,2,183693,FALSE,https://api.spotify.com/v1/tracks/4vyL8RX03QfBRBs9dMUHxX,FALSE,"Best Friends, Right? - Live At The Leicester Summer Sundae / 2004",NA,10,track,spotify:track:4vyL8RX03QfBRBs9dMUHxX,https://open.spotify.com/track/4vyL8RX03QfBRBs9dMUHxX,At The BBC,B,major,B major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.302,0.375,4,-6.187,0,0.0317,0.744,0.0507,0.73,0.0709,128.33,2vqISHPIeMcCS9P2JLQVBe,https://api.spotify.com/v1/audio-analysis/2vqISHPIeMcCS9P2JLQVBe,4,,,2,219026,FALSE,https://api.spotify.com/v1/tracks/2vqISHPIeMcCS9P2JLQVBe,FALSE,I Should Care - Live From The Stables / 2004,NA,11,track,spotify:track:2vqISHPIeMcCS9P2JLQVBe,https://open.spotify.com/track/2vqISHPIeMcCS9P2JLQVBe,At The BBC,E,minor,E minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.338,0.706,3,-3.427,1,0.076,0.64,3.8e-6,0.941,0.579,182.973,52nsOnLZuRQSNJr7940Xyb,https://api.spotify.com/v1/audio-analysis/52nsOnLZuRQSNJr7940Xyb,4,,,2,154680,FALSE,https://api.spotify.com/v1/tracks/52nsOnLZuRQSNJr7940Xyb,FALSE,Lullaby Of Birdland - Live From The Stables / 2004,NA,12,track,spotify:track:52nsOnLZuRQSNJr7940Xyb,https://open.spotify.com/track/52nsOnLZuRQSNJr7940Xyb,At The BBC,D#,major,D# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.757,0.302,5,-8.13,0,0.0375,0.739,2.08e-6,0.16,0.657,96.125,4ml8AFICctVaeDXoZyhp42,https://api.spotify.com/v1/audio-analysis/4ml8AFICctVaeDXoZyhp42,4,,,2,231066,FALSE,https://api.spotify.com/v1/tracks/4ml8AFICctVaeDXoZyhp42,FALSE,"Valerie - Live Jo Whiley, BBC Live Lounge Session / 2007",NA,13,track,spotify:track:4ml8AFICctVaeDXoZyhp42,https://open.spotify.com/track/4ml8AFICctVaeDXoZyhp42,At The BBC,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.401,0.425,2,-7.489,1,0.0327,0.778,0,0.119,0.301,171.525,1oUD1lrhU5MnAxrQvLvTdX,https://api.spotify.com/v1/audio-analysis/1oUD1lrhU5MnAxrQvLvTdX,3,,,2,153920,FALSE,https://api.spotify.com/v1/tracks/1oUD1lrhU5MnAxrQvLvTdX,FALSE,"To Know Him Is To Love Him - Live Pete Mitchell, BBC Radio Session / 2006",NA,14,track,spotify:track:1oUD1lrhU5MnAxrQvLvTdX,https://open.spotify.com/track/1oUD1lrhU5MnAxrQvLvTdX,At The BBC,D,major,D major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.471,0.775,1,-6.753,1,0.323,0.289,1.13e-4,0.918,0.607,75.012,0hyOh5ZiEZREY6Vq2aCbJu,https://api.spotify.com/v1/audio-analysis/0hyOh5ZiEZREY6Vq2aCbJu,4,,,3,193453,FALSE,https://api.spotify.com/v1/tracks/0hyOh5ZiEZREY6Vq2aCbJu,FALSE,Know You Now - Live At Porchester Hall / 2007,NA,1,track,spotify:track:0hyOh5ZiEZREY6Vq2aCbJu,https://open.spotify.com/track/0hyOh5ZiEZREY6Vq2aCbJu,At The BBC,C#,major,C# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.451,0.771,1,-6.415,0,0.454,0.687,1.38e-5,0.776,0.545,121.284,6VYG3BMGYLDV0OR6sEXax8,https://api.spotify.com/v1/audio-analysis/6VYG3BMGYLDV0OR6sEXax8,4,,,3,207413,FALSE,https://api.spotify.com/v1/tracks/6VYG3BMGYLDV0OR6sEXax8,FALSE,Tears Dry On Their Own - Live At Porchester Hall / 2007,NA,2,track,spotify:track:6VYG3BMGYLDV0OR6sEXax8,https://open.spotify.com/track/6VYG3BMGYLDV0OR6sEXax8,At The BBC,C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.555,0.718,9,-7.649,1,0.113,0.229,1.39e-4,0.892,0.476,111.377,1ZhAr4A06WiFRR99KUy6Cr,https://api.spotify.com/v1/audio-analysis/1ZhAr4A06WiFRR99KUy6Cr,4,,,3,255520,FALSE,https://api.spotify.com/v1/tracks/1ZhAr4A06WiFRR99KUy6Cr,FALSE,You Know I'm No Good - Live At Porchester Hall / 2007,NA,3,track,spotify:track:1ZhAr4A06WiFRR99KUy6Cr,https://open.spotify.com/track/1ZhAr4A06WiFRR99KUy6Cr,At The BBC,A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.66,0.542,9,-8.506,1,0.0849,0.414,3.72e-4,0.677,0.531,95.94,10OcV3kj7y1mS2XproMP0L,https://api.spotify.com/v1/audio-analysis/10OcV3kj7y1mS2XproMP0L,4,,,3,192973,FALSE,https://api.spotify.com/v1/tracks/10OcV3kj7y1mS2XproMP0L,FALSE,Just Friends - Live At Porchester Hall / 2007,NA,4,track,spotify:track:10OcV3kj7y1mS2XproMP0L,https://open.spotify.com/track/10OcV3kj7y1mS2XproMP0L,At The BBC,A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.546,0.732,11,-6.903,0,0.164,0.384,0,0.946,0.576,101.221,63GyGK1Xn6nolMAz0hOk7J,https://api.spotify.com/v1/audio-analysis/63GyGK1Xn6nolMAz0hOk7J,4,,,3,195240,FALSE,https://api.spotify.com/v1/tracks/63GyGK1Xn6nolMAz0hOk7J,FALSE,He Can Only Hold Her - Live At Porchester Hall / 2007,NA,5,track,spotify:track:63GyGK1Xn6nolMAz0hOk7J,https://open.spotify.com/track/63GyGK1Xn6nolMAz0hOk7J,At The BBC,B,minor,B minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.407,0.454,9,-7.869,1,0.053,0.753,0,0.968,0.224,112.658,6jeGMGeUYfYSJPy1ucqbMC,https://api.spotify.com/v1/audio-analysis/6jeGMGeUYfYSJPy1ucqbMC,4,,,3,200573,FALSE,https://api.spotify.com/v1/tracks/6jeGMGeUYfYSJPy1ucqbMC,FALSE,I Heard Love Is Blind - Live At Porchester Hall / 2007,NA,6,track,spotify:track:6jeGMGeUYfYSJPy1ucqbMC,https://open.spotify.com/track/6jeGMGeUYfYSJPy1ucqbMC,At The BBC,A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.42,0.79,0,-6.297,1,0.156,0.669,2.84e-5,0.967,0.474,152.139,6OZWdGJUyKiaApZhdcaaPa,https://api.spotify.com/v1/audio-analysis/6OZWdGJUyKiaApZhdcaaPa,4,,,3,218613,FALSE,https://api.spotify.com/v1/tracks/6OZWdGJUyKiaApZhdcaaPa,FALSE,Rehab - Live At Porchester Hall / 2007,NA,7,track,spotify:track:6OZWdGJUyKiaApZhdcaaPa,https://open.spotify.com/track/6OZWdGJUyKiaApZhdcaaPa,At The BBC,C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.48,0.502,1,-7.21,0,0.0851,0.597,1.16e-6,0.93,0.363,113.677,3hxKhsgHf8ALzGBOTkvwId,https://api.spotify.com/v1/audio-analysis/3hxKhsgHf8ALzGBOTkvwId,4,,,3,210560,FALSE,https://api.spotify.com/v1/tracks/3hxKhsgHf8ALzGBOTkvwId,FALSE,Take The Box - Live At Porchester Hall / 2007,NA,8,track,spotify:track:3hxKhsgHf8ALzGBOTkvwId,https://open.spotify.com/track/3hxKhsgHf8ALzGBOTkvwId,At The BBC,C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.449,0.439,5,-9.063,1,0.0677,0.878,0.00248,0.718,0.184,131.59,1QvZS74G7QMwNaooqXF5QQ,https://api.spotify.com/v1/audio-analysis/1QvZS74G7QMwNaooqXF5QQ,3,,,3,201706,FALSE,https://api.spotify.com/v1/tracks/1QvZS74G7QMwNaooqXF5QQ,FALSE,Some Unholy War - Live At Porchester Hall / 2007,NA,9,track,spotify:track:1QvZS74G7QMwNaooqXF5QQ,https://open.spotify.com/track/1QvZS74G7QMwNaooqXF5QQ,At The BBC,F,major,F major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.504,0.694,2,-7.154,1,0.255,0.432,0.00356,0.972,0.347,138.178,0jUfqdTFe6YacBEMpDjCef,https://api.spotify.com/v1/audio-analysis/0jUfqdTFe6YacBEMpDjCef,4,,,3,234840,FALSE,https://api.spotify.com/v1/tracks/0jUfqdTFe6YacBEMpDjCef,FALSE,Back To Black - Live At Porchester Hall / 2007,NA,10,track,spotify:track:0jUfqdTFe6YacBEMpDjCef,https://open.spotify.com/track/0jUfqdTFe6YacBEMpDjCef,At The BBC,D,major,D major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.461,0.705,5,-6.084,0,0.0825,0.539,1.5e-5,0.605,0.554,103.815,6xdXjusXkedyQKktEgH3D6,https://api.spotify.com/v1/audio-analysis/6xdXjusXkedyQKktEgH3D6,4,,,3,215826,FALSE,https://api.spotify.com/v1/tracks/6xdXjusXkedyQKktEgH3D6,FALSE,Valerie - Live At Porchester Hall / 2007,NA,11,track,spotify:track:6xdXjusXkedyQKktEgH3D6,https://open.spotify.com/track/6xdXjusXkedyQKktEgH3D6,At The BBC,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.48,0.763,8,-6.449,1,0.13,0.696,2.91e-5,0.969,0.465,109.107,4g3DjDIpi4pujMwQsKwBEP,https://api.spotify.com/v1/audio-analysis/4g3DjDIpi4pujMwQsKwBEP,4,,,3,178880,FALSE,https://api.spotify.com/v1/tracks/4g3DjDIpi4pujMwQsKwBEP,FALSE,Addicted - Live At Porchester Hall / 2007,NA,12,track,spotify:track:4g3DjDIpi4pujMwQsKwBEP,https://open.spotify.com/track/4g3DjDIpi4pujMwQsKwBEP,At The BBC,G#,major,G# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.477,0.603,1,-6.786,0,0.0612,0.726,1.7e-4,0.95,0.428,88.302,4cks9W8cvxx0FnsdLSkqNj,https://api.spotify.com/v1/audio-analysis/4cks9W8cvxx0FnsdLSkqNj,4,,,3,161893,FALSE,https://api.spotify.com/v1/tracks/4cks9W8cvxx0FnsdLSkqNj,FALSE,Me & Mr Jones - Live At Porchester Hall / 2007,NA,13,track,spotify:track:4cks9W8cvxx0FnsdLSkqNj,https://open.spotify.com/track/4cks9W8cvxx0FnsdLSkqNj,At The BBC,C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,741JhzvIOudONDzRg6wuWJ,album,,2021-05-07,2021,day,0.345,0.891,5,-6.641,0,0.32,0.108,0,0.936,0.529,158.359,1FZxXiHj3oOYygBKO8cRcr,https://api.spotify.com/v1/audio-analysis/1FZxXiHj3oOYygBKO8cRcr,4,,,3,171493,FALSE,https://api.spotify.com/v1/tracks/1FZxXiHj3oOYygBKO8cRcr,FALSE,Monkey Man - Live At Porchester Hall / 2007,NA,14,track,spotify:track:1FZxXiHj3oOYygBKO8cRcr,https://open.spotify.com/track/1FZxXiHj3oOYygBKO8cRcr,At The BBC,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.552,0.0227,3,-24.076,1,0.0585,0.993,0.826,0.108,0.053900000000000003,135.179,0ct0FgC4wIXBNXhxADiOYw,https://api.spotify.com/v1/audio-analysis/0ct0FgC4wIXBNXhxADiOYw,3,,,1,58226,FALSE,https://api.spotify.com/v1/tracks/0ct0FgC4wIXBNXhxADiOYw,FALSE,Opening - Edit,NA,1,track,spotify:track:0ct0FgC4wIXBNXhxADiOYw,https://open.spotify.com/track/0ct0FgC4wIXBNXhxADiOYw,AMY (Original Motion Picture Soundtrack),D#,major,D# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.883,0.458,9,-6.801,0,0.0411,0.0401,4.19e-4,0.0603,0.816,91.426,5LC7nItIEFp4nzdFdEGbf9,https://api.spotify.com/v1/audio-analysis/5LC7nItIEFp4nzdFdEGbf9,4,,,1,214493,FALSE,https://api.spotify.com/v1/tracks/5LC7nItIEFp4nzdFdEGbf9,FALSE,Stronger Than Me,NA,2,track,spotify:track:5LC7nItIEFp4nzdFdEGbf9,https://open.spotify.com/track/5LC7nItIEFp4nzdFdEGbf9,AMY (Original Motion Picture Soundtrack),A,minor,A minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.401,0.39,6,-12.057,0,0.0347,0.938,0.883,0.0866,0.0998,123.895,7phJBl7QDxEurVpW1Nlqf9,https://api.spotify.com/v1/audio-analysis/7phJBl7QDxEurVpW1Nlqf9,3,,,1,173040,FALSE,https://api.spotify.com/v1/tracks/7phJBl7QDxEurVpW1Nlqf9,FALSE,Poetic Finale - Edit,NA,3,track,spotify:track:7phJBl7QDxEurVpW1Nlqf9,https://open.spotify.com/track/7phJBl7QDxEurVpW1Nlqf9,AMY (Original Motion Picture Soundtrack),F#,minor,F# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.578,0.333,11,-10.182,0,0.0971,0.871,0.0017,0.932,0.496,130.486,40GTKaedGtzka8dlV4NuqI,https://api.spotify.com/v1/audio-analysis/40GTKaedGtzka8dlV4NuqI,4,,,1,285453,FALSE,https://api.spotify.com/v1/tracks/40GTKaedGtzka8dlV4NuqI,FALSE,What Is It About Men - Live At North Sea Jazz Festival,NA,4,track,spotify:track:40GTKaedGtzka8dlV4NuqI,https://open.spotify.com/track/40GTKaedGtzka8dlV4NuqI,AMY (Original Motion Picture Soundtrack),B,minor,B minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.15,0.331,7,-15.546,1,0.0393,0.91,0.927,0.109,0.0349,79.772,39zRJRLDREljQNU6LCgMFi,https://api.spotify.com/v1/audio-analysis/39zRJRLDREljQNU6LCgMFi,3,,,1,74320,FALSE,https://api.spotify.com/v1/tracks/39zRJRLDREljQNU6LCgMFi,FALSE,Walk - Edit,NA,5,track,spotify:track:39zRJRLDREljQNU6LCgMFi,https://open.spotify.com/track/39zRJRLDREljQNU6LCgMFi,AMY (Original Motion Picture Soundtrack),G,major,G major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.488,0.431,5,-11.396,1,0.0387,0.463,8.55e-4,0.0901,0.223,156.201,6OaexwzJ7LXIykBzRqpOmD,https://api.spotify.com/v1/audio-analysis/6OaexwzJ7LXIykBzRqpOmD,3,,,1,195306,FALSE,https://api.spotify.com/v1/tracks/6OaexwzJ7LXIykBzRqpOmD,FALSE,Some Unholy War - Down Tempo,NA,6,track,spotify:track:6OaexwzJ7LXIykBzRqpOmD,https://open.spotify.com/track/6OaexwzJ7LXIykBzRqpOmD,AMY (Original Motion Picture Soundtrack),F,major,F major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.207,0.129,0,-27.382,0,0.0462,0.987,0.911,0.0749,0.0394,74.887,34Owb4rZbbKapQ4YFeuhVl,https://api.spotify.com/v1/audio-analysis/34Owb4rZbbKapQ4YFeuhVl,4,,,1,52146,FALSE,https://api.spotify.com/v1/tracks/34Owb4rZbbKapQ4YFeuhVl,FALSE,Holiday Texts - Edit,NA,7,track,spotify:track:34Owb4rZbbKapQ4YFeuhVl,https://open.spotify.com/track/34Owb4rZbbKapQ4YFeuhVl,AMY (Original Motion Picture Soundtrack),C,minor,C minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.7,0.604,3,-17.517,1,0.0831,0.903,0.892,0.112,0.179,154.954,1g57PnPzUoyRtKADFDehCZ,https://api.spotify.com/v1/audio-analysis/1g57PnPzUoyRtKADFDehCZ,3,,,1,104893,FALSE,https://api.spotify.com/v1/tracks/1g57PnPzUoyRtKADFDehCZ,FALSE,Kidnapping Amy,NA,8,track,spotify:track:1g57PnPzUoyRtKADFDehCZ,https://open.spotify.com/track/1g57PnPzUoyRtKADFDehCZ,AMY (Original Motion Picture Soundtrack),D#,major,D# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.525,0.159,4,-15.278,0,0.107,0.726,0,0.363,0.34,82.708,6l15zKFH48Am5AeuCM38o6,https://api.spotify.com/v1/audio-analysis/6l15zKFH48Am5AeuCM38o6,4,,,1,82360,FALSE,https://api.spotify.com/v1/tracks/6l15zKFH48Am5AeuCM38o6,FALSE,Like Smoke,NA,9,track,spotify:track:6l15zKFH48Am5AeuCM38o6,https://open.spotify.com/track/6l15zKFH48Am5AeuCM38o6,AMY (Original Motion Picture Soundtrack),E,minor,E minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.661,0.782,1,-5.998,0,0.134,0.504,0,0.246,0.534,121.512,3GnlbPpTLBwz35Cg5sdxuX,https://api.spotify.com/v1/audio-analysis/3GnlbPpTLBwz35Cg5sdxuX,4,,,1,187200,TRUE,https://api.spotify.com/v1/tracks/3GnlbPpTLBwz35Cg5sdxuX,FALSE,Tears Dry On Their Own,NA,10,track,spotify:track:3GnlbPpTLBwz35Cg5sdxuX,https://open.spotify.com/track/3GnlbPpTLBwz35Cg5sdxuX,AMY (Original Motion Picture Soundtrack),C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.385,0.0207,1,-26.713,0,0.0533,0.966,0.975,0.0951,0.27,77.387,2p6H4OtLnkDDg2gJrWeRkA,https://api.spotify.com/v1/audio-analysis/2p6H4OtLnkDDg2gJrWeRkA,4,,,1,54733,FALSE,https://api.spotify.com/v1/tracks/2p6H4OtLnkDDg2gJrWeRkA,FALSE,Seperacao Fotos - Edit,NA,11,track,spotify:track:2p6H4OtLnkDDg2gJrWeRkA,https://open.spotify.com/track/2p6H4OtLnkDDg2gJrWeRkA,AMY (Original Motion Picture Soundtrack),C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.267,0.542,2,-10.78,1,0.0927,0.201,0.872,0.115,0.112,200.194,0DG31aaspJyTKKQlt8vqgd,https://api.spotify.com/v1/audio-analysis/0DG31aaspJyTKKQlt8vqgd,4,,,1,384106,FALSE,https://api.spotify.com/v1/tracks/0DG31aaspJyTKKQlt8vqgd,FALSE,The Name Of The Wave,NA,12,track,spotify:track:0DG31aaspJyTKKQlt8vqgd,https://open.spotify.com/track/0DG31aaspJyTKKQlt8vqgd,AMY (Original Motion Picture Soundtrack),D,major,D major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.373,0.607,2,-3.664,0,0.0505,0.261,2.74e-6,0.0986,0.225,119.821,4vCyAAMCZZ9r4443negeQO,https://api.spotify.com/v1/audio-analysis/4vCyAAMCZZ9r4443negeQO,4,,,1,229240,TRUE,https://api.spotify.com/v1/tracks/4vCyAAMCZZ9r4443negeQO,FALSE,Back To Black,NA,13,track,spotify:track:4vCyAAMCZZ9r4443negeQO,https://open.spotify.com/track/4vCyAAMCZZ9r4443negeQO,AMY (Original Motion Picture Soundtrack),D,minor,D minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.512,0.144,8,-17.314,1,0.0452,0.979,0.839,0.0593,0.326,135.348,3KKEvnFHvfJ6ubEReS1dmK,https://api.spotify.com/v1/audio-analysis/3KKEvnFHvfJ6ubEReS1dmK,3,,,1,75560,FALSE,https://api.spotify.com/v1/tracks/3KKEvnFHvfJ6ubEReS1dmK,FALSE,Cynthia - Edit,NA,14,track,spotify:track:3KKEvnFHvfJ6ubEReS1dmK,https://open.spotify.com/track/3KKEvnFHvfJ6ubEReS1dmK,AMY (Original Motion Picture Soundtrack),G#,major,G# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.422,0.773,0,-5.508,1,0.0951,0.0413,1.44e-5,0.223,0.425,144.974,7E4dtl5gWROiMKibvedh0i,https://api.spotify.com/v1/audio-analysis/7E4dtl5gWROiMKibvedh0i,4,,,1,221266,FALSE,https://api.spotify.com/v1/tracks/7E4dtl5gWROiMKibvedh0i,FALSE,Rehab - Live On Jools Holland,NA,15,track,spotify:track:7E4dtl5gWROiMKibvedh0i,https://open.spotify.com/track/7E4dtl5gWROiMKibvedh0i,AMY (Original Motion Picture Soundtrack),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.478,0.221,0,-21.591,0,0.0329,0.961,0.759,0.071,0.057,74.982,7taSJbOhxfc7Vfto48gFKj,https://api.spotify.com/v1/audio-analysis/7taSJbOhxfc7Vfto48gFKj,1,,,1,65453,FALSE,https://api.spotify.com/v1/tracks/7taSJbOhxfc7Vfto48gFKj,FALSE,In The Studio - Edit,NA,16,track,spotify:track:7taSJbOhxfc7Vfto48gFKj,https://open.spotify.com/track/7taSJbOhxfc7Vfto48gFKj,AMY (Original Motion Picture Soundtrack),C,minor,C minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.559,0.13,9,-9.121,0,0.0452,0.95,1.55e-4,0.89,0.287,132.742,1MdMYZN0VnpjTy6nBCM2Qf,https://api.spotify.com/v1/audio-analysis/1MdMYZN0VnpjTy6nBCM2Qf,3,,,1,175986,FALSE,https://api.spotify.com/v1/tracks/1MdMYZN0VnpjTy6nBCM2Qf,FALSE,We're Still Friends - Live At The Union Chapel,NA,17,track,spotify:track:1MdMYZN0VnpjTy6nBCM2Qf,https://open.spotify.com/track/1MdMYZN0VnpjTy6nBCM2Qf,AMY (Original Motion Picture Soundtrack),A,minor,A minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.496,0.0423,6,-27.655,0,0.0569,0.994,0.936,0.0835,0.26,120.012,1w3KJgj6x75PiQm8Ppe0sS,https://api.spotify.com/v1/audio-analysis/1w3KJgj6x75PiQm8Ppe0sS,3,,,1,135253,FALSE,https://api.spotify.com/v1/tracks/1w3KJgj6x75PiQm8Ppe0sS,FALSE,Amy Lives,NA,18,track,spotify:track:1w3KJgj6x75PiQm8Ppe0sS,https://open.spotify.com/track/1w3KJgj6x75PiQm8Ppe0sS,AMY (Original Motion Picture Soundtrack),F#,minor,F# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.511,0.254,0,-9.44,1,0.0331,0.871,1.65e-4,0.0996,0.247,88.421,1DYCdxNAVNUCAOlAi7aP5o,https://api.spotify.com/v1/audio-analysis/1DYCdxNAVNUCAOlAi7aP5o,4,,,1,152093,FALSE,https://api.spotify.com/v1/tracks/1DYCdxNAVNUCAOlAi7aP5o,FALSE,Love Is A Losing Game - Live At The Mercury Music Awards,NA,19,track,spotify:track:1DYCdxNAVNUCAOlAi7aP5o,https://open.spotify.com/track/1DYCdxNAVNUCAOlAi7aP5o,AMY (Original Motion Picture Soundtrack),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.188,0.332,10,-15.618,0,0.0421,0.95,0.973,0.109,0.057,74.419,5StnpUPRsALrz6osNM2Bsa,https://api.spotify.com/v1/audio-analysis/5StnpUPRsALrz6osNM2Bsa,3,,,1,64800,FALSE,https://api.spotify.com/v1/tracks/5StnpUPRsALrz6osNM2Bsa,FALSE,Arrested - Edit,NA,20,track,spotify:track:5StnpUPRsALrz6osNM2Bsa,https://open.spotify.com/track/5StnpUPRsALrz6osNM2Bsa,AMY (Original Motion Picture Soundtrack),A#,minor,A# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.255,0.267,1,-11.902,1,0.0324,0.863,6.55e-5,0.126,0.199,60.763,12TAfwmQSufwlerS9UJaQB,https://api.spotify.com/v1/audio-analysis/12TAfwmQSufwlerS9UJaQB,4,,,1,203546,FALSE,https://api.spotify.com/v1/tracks/12TAfwmQSufwlerS9UJaQB,FALSE,Body And Soul,NA,21,track,spotify:track:12TAfwmQSufwlerS9UJaQB,https://open.spotify.com/track/12TAfwmQSufwlerS9UJaQB,AMY (Original Motion Picture Soundtrack),C#,major,C# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.47,0.256,0,-15.181,0,0.0281,0.965,0.948,0.0832,0.0604,135.021,6sugep3RYUZ6G67iANvfr7,https://api.spotify.com/v1/audio-analysis/6sugep3RYUZ6G67iANvfr7,3,,,1,169173,FALSE,https://api.spotify.com/v1/tracks/6sugep3RYUZ6G67iANvfr7,FALSE,Amy Forever,NA,22,track,spotify:track:6sugep3RYUZ6G67iANvfr7,https://open.spotify.com/track/6sugep3RYUZ6G67iANvfr7,AMY (Original Motion Picture Soundtrack),C,minor,C minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,5Fb59VtYjJNTXPcNGpoDU3,album,,2015-10-30,2015,day,0.758,0.304,5,-8.092,0,0.0373,0.734,3.72e-6,0.167,0.647,96.117,5it9RIRXDwiLpJKdce6Z7e,https://api.spotify.com/v1/audio-analysis/5it9RIRXDwiLpJKdce6Z7e,4,,,1,232120,FALSE,https://api.spotify.com/v1/tracks/5it9RIRXDwiLpJKdce6Z7e,FALSE,Valerie - BBC Radio 1 Live Lounge,NA,23,track,spotify:track:5it9RIRXDwiLpJKdce6Z7e,https://open.spotify.com/track/5it9RIRXDwiLpJKdce6Z7e,AMY (Original Motion Picture Soundtrack),F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.705,0.634,5,-6.083,0,0.0282,0.0405,3.53e-5,0.349,0.639,98.008,4NDpn6yfD5aqafYWFEaJDz,https://api.spotify.com/v1/audio-analysis/4NDpn6yfD5aqafYWFEaJDz,4,,,1,169373,FALSE,https://api.spotify.com/v1/tracks/4NDpn6yfD5aqafYWFEaJDz,FALSE,Our Day Will Come,NA,1,track,spotify:track:4NDpn6yfD5aqafYWFEaJDz,https://open.spotify.com/track/4NDpn6yfD5aqafYWFEaJDz,Lioness: Hidden Treasures,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.461,0.633,11,-6.057,0,0.0333,0.656,0,0.205,0.63,82.586,77RrNbeBUXb1Dtewp0HQuR,https://api.spotify.com/v1/audio-analysis/77RrNbeBUXb1Dtewp0HQuR,4,,,1,213586,FALSE,https://api.spotify.com/v1/tracks/77RrNbeBUXb1Dtewp0HQuR,FALSE,Between The Cheats,NA,2,track,spotify:track:77RrNbeBUXb1Dtewp0HQuR,https://open.spotify.com/track/77RrNbeBUXb1Dtewp0HQuR,Lioness: Hidden Treasures,B,minor,B minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.439,0.795,4,-4.644,1,0.0384,0.306,0,0.179,0.428,169.975,0IEGGuRHP8ylbCXausRF9p,https://api.spotify.com/v1/audio-analysis/0IEGGuRHP8ylbCXausRF9p,4,,,1,248093,TRUE,https://api.spotify.com/v1/tracks/0IEGGuRHP8ylbCXausRF9p,FALSE,Tears Dry - Original Version,NA,3,track,spotify:track:0IEGGuRHP8ylbCXausRF9p,https://open.spotify.com/track/0IEGGuRHP8ylbCXausRF9p,Lioness: Hidden Treasures,E,major,E major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.587,0.624,0,-4.657,1,0.025,0.161,1.91e-4,0.118,0.251,93.428,0LbK1bodGLc9xmV1cS9jvL,https://api.spotify.com/v1/audio-analysis/0LbK1bodGLc9xmV1cS9jvL,4,,,1,262813,FALSE,https://api.spotify.com/v1/tracks/0LbK1bodGLc9xmV1cS9jvL,FALSE,Will You Still Love Me Tomorrow? - 2011,NA,4,track,spotify:track:0LbK1bodGLc9xmV1cS9jvL,https://open.spotify.com/track/0LbK1bodGLc9xmV1cS9jvL,Lioness: Hidden Treasures,C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.637,0.866,7,-3.979,0,0.0868,0.154,0,0.181,0.336,97.897,2r45rookK2awLkiOHOef1o,https://api.spotify.com/v1/audio-analysis/2r45rookK2awLkiOHOef1o,4,,,1,278000,TRUE,https://api.spotify.com/v1/tracks/2r45rookK2awLkiOHOef1o,FALSE,Like Smoke,NA,5,track,spotify:track:2r45rookK2awLkiOHOef1o,https://open.spotify.com/track/2r45rookK2awLkiOHOef1o,Lioness: Hidden Treasures,G,minor,G minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.665,0.827,5,-4.429,0,0.0348,0.0127,7.62e-4,0.0815,0.705,100.657,1om5SLZiUA9DVEnjcZBBzA,https://api.spotify.com/v1/audio-analysis/1om5SLZiUA9DVEnjcZBBzA,4,,,1,239906,FALSE,https://api.spotify.com/v1/tracks/1om5SLZiUA9DVEnjcZBBzA,FALSE,Valerie - '68 Version,NA,6,track,spotify:track:1om5SLZiUA9DVEnjcZBBzA,https://open.spotify.com/track/1om5SLZiUA9DVEnjcZBBzA,Lioness: Hidden Treasures,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.696,0.616,9,-5.144,0,0.047,0.25,4.35e-6,0.107,0.66,138.059,7F5rIyOI88zk36AiBXC8xq,https://api.spotify.com/v1/audio-analysis/7F5rIyOI88zk36AiBXC8xq,4,,,1,166960,FALSE,https://api.spotify.com/v1/tracks/7F5rIyOI88zk36AiBXC8xq,FALSE,The Girl From Ipanema,NA,7,track,spotify:track:7F5rIyOI88zk36AiBXC8xq,https://open.spotify.com/track/7F5rIyOI88zk36AiBXC8xq,Lioness: Hidden Treasures,A,minor,A minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.624,0.488,4,-8.258,0,0.0584,0.375,9.63e-5,0.339,0.273,84.218,4d0dY3ZeMdoYrD5YmdFvWZ,https://api.spotify.com/v1/audio-analysis/4d0dY3ZeMdoYrD5YmdFvWZ,4,,,1,230853,TRUE,https://api.spotify.com/v1/tracks/4d0dY3ZeMdoYrD5YmdFvWZ,FALSE,Half Time,NA,8,track,spotify:track:4d0dY3ZeMdoYrD5YmdFvWZ,https://open.spotify.com/track/4d0dY3ZeMdoYrD5YmdFvWZ,Lioness: Hidden Treasures,E,minor,E minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.454,0.378,9,-8.986,1,0.061,0.572,5.78e-6,0.0956,0.272,169.757,2G4rsUWjuBb6vPrUm01etb,https://api.spotify.com/v1/audio-analysis/2G4rsUWjuBb6vPrUm01etb,3,,,1,264266,FALSE,https://api.spotify.com/v1/tracks/2G4rsUWjuBb6vPrUm01etb,FALSE,Wake Up Alone - Original Recording,NA,9,track,spotify:track:2G4rsUWjuBb6vPrUm01etb,https://open.spotify.com/track/2G4rsUWjuBb6vPrUm01etb,Lioness: Hidden Treasures,A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.601,0.759,8,-6.934,0,0.0557,0.101,0,0.213,0.581,97.501,7BizTaPDXSWVi8vdGeFg0W,https://api.spotify.com/v1/audio-analysis/7BizTaPDXSWVi8vdGeFg0W,4,,,1,176293,FALSE,https://api.spotify.com/v1/tracks/7BizTaPDXSWVi8vdGeFg0W,FALSE,"Best Friends, Right?",NA,10,track,spotify:track:7BizTaPDXSWVi8vdGeFg0W,https://open.spotify.com/track/7BizTaPDXSWVi8vdGeFg0W,Lioness: Hidden Treasures,G#,minor,G# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.366,0.327,1,-9.05,1,0.0287,0.848,4.37e-5,0.158,0.162,64.861,4AyULNTWuCtbpxzY2qVowJ,https://api.spotify.com/v1/audio-analysis/4AyULNTWuCtbpxzY2qVowJ,4,,,1,198813,FALSE,https://api.spotify.com/v1/tracks/4AyULNTWuCtbpxzY2qVowJ,FALSE,Body And Soul,NA,11,track,spotify:track:4AyULNTWuCtbpxzY2qVowJ,https://open.spotify.com/track/4AyULNTWuCtbpxzY2qVowJ,Lioness: Hidden Treasures,C#,major,C# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,4xdRjOhY9NHmMpI7U3e2c3,album,,2011-01-01,2011,day,0.524,0.542,8,-7.516,1,0.0513,0.232,3.13e-5,0.327,0.362,119.979,4fdPpmqn1eYLyWRcxZmx2D,https://api.spotify.com/v1/audio-analysis/4fdPpmqn1eYLyWRcxZmx2D,4,,,1,269373,FALSE,https://api.spotify.com/v1/tracks/4fdPpmqn1eYLyWRcxZmx2D,FALSE,A Song For You,NA,12,track,spotify:track:4fdPpmqn1eYLyWRcxZmx2D,https://open.spotify.com/track/4fdPpmqn1eYLyWRcxZmx2D,Lioness: Hidden Treasures,G#,major,G# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.691,0.477,8,-6.566,0,0.0453,0.348,0,0.121,0.154,116.044,2rLNJjLmFVTZg1APQ4RgnQ,https://api.spotify.com/v1/audio-analysis/2rLNJjLmFVTZg1APQ4RgnQ,4,,,1,204200,FALSE,https://api.spotify.com/v1/tracks/2rLNJjLmFVTZg1APQ4RgnQ,FALSE,Take The Box - Demo,NA,1,track,spotify:track:2rLNJjLmFVTZg1APQ4RgnQ,https://open.spotify.com/track/2rLNJjLmFVTZg1APQ4RgnQ,Frank,G#,minor,G# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.541,0.2,11,-8.917,0,0.0554,0.863,0,0.106,0.276,79.845,3xmra5gBnWr0U4DK3v57F9,https://api.spotify.com/v1/audio-analysis/3xmra5gBnWr0U4DK3v57F9,4,,,1,132066,FALSE,https://api.spotify.com/v1/tracks/3xmra5gBnWr0U4DK3v57F9,FALSE,I Heard Love Is Blind - Demo,NA,2,track,spotify:track:3xmra5gBnWr0U4DK3v57F9,https://open.spotify.com/track/3xmra5gBnWr0U4DK3v57F9,Frank,B,minor,B minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.516,0.249,5,-11.929,1,0.0338,0.859,1.13e-4,0.107,0.131,109.077,6NTYTe9TefEXD65luwjxal,https://api.spotify.com/v1/audio-analysis/6NTYTe9TefEXD65luwjxal,4,,,1,268440,FALSE,https://api.spotify.com/v1/tracks/6NTYTe9TefEXD65luwjxal,FALSE,Someone To Watch Over Me - Demo,NA,3,track,spotify:track:6NTYTe9TefEXD65luwjxal,https://open.spotify.com/track/6NTYTe9TefEXD65luwjxal,Frank,F,major,F major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.569,0.198,8,-8.989,0,0.0566,0.78,0,0.174,0.294,71.557,2rgemKOXUQGeIABEgwRXAa,https://api.spotify.com/v1/audio-analysis/2rgemKOXUQGeIABEgwRXAa,4,,,1,283746,FALSE,https://api.spotify.com/v1/tracks/2rgemKOXUQGeIABEgwRXAa,FALSE,What It Is - Demo,NA,4,track,spotify:track:2rgemKOXUQGeIABEgwRXAa,https://open.spotify.com/track/2rgemKOXUQGeIABEgwRXAa,Frank,G#,minor,G# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.482,0.332,5,-9.473,0,0.0533,0.575,6.04e-6,0.981,0.563,111.422,3FVGnrAQYEwQ2TNMcNFxl0,https://api.spotify.com/v1/audio-analysis/3FVGnrAQYEwQ2TNMcNFxl0,3,,,1,201626,FALSE,https://api.spotify.com/v1/tracks/3FVGnrAQYEwQ2TNMcNFxl0,FALSE,"Teach Me Tonight - Live At The Hootenanny, London / 2004",NA,5,track,spotify:track:3FVGnrAQYEwQ2TNMcNFxl0,https://open.spotify.com/track/3FVGnrAQYEwQ2TNMcNFxl0,Frank,F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.48,0.803,8,-7.232,0,0.0705,0.0144,0.0249,0.12,0.625,182.071,3JpHeT83VlL2sYNvvciNGw,https://api.spotify.com/v1/audio-analysis/3JpHeT83VlL2sYNvvciNGw,4,,,1,227973,FALSE,https://api.spotify.com/v1/tracks/3JpHeT83VlL2sYNvvciNGw,FALSE,'Round Midnight,NA,6,track,spotify:track:3JpHeT83VlL2sYNvvciNGw,https://open.spotify.com/track/3JpHeT83VlL2sYNvvciNGw,Frank,G#,minor,G# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.557,0.56,4,-5.695,1,0.0343,0.54,3.01e-6,0.228,0.206,82.093,3Z5piVCYtXkfz2DEwqBBnt,https://api.spotify.com/v1/audio-analysis/3Z5piVCYtXkfz2DEwqBBnt,4,,,1,218533,FALSE,https://api.spotify.com/v1/tracks/3Z5piVCYtXkfz2DEwqBBnt,FALSE,Fool's Gold,NA,7,track,spotify:track:3Z5piVCYtXkfz2DEwqBBnt,https://open.spotify.com/track/3Z5piVCYtXkfz2DEwqBBnt,Frank,E,major,E major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.793,0.461,9,-8.288,0,0.103,0.283,3.36e-5,0.969,0.71,91.067,2Ed07HGaDuZGrDYAFG1BdC,https://api.spotify.com/v1/audio-analysis/2Ed07HGaDuZGrDYAFG1BdC,4,,,1,231546,FALSE,https://api.spotify.com/v1/tracks/2Ed07HGaDuZGrDYAFG1BdC,FALSE,"Stronger Than Me - Later With Jools Holland, London / 2003",NA,8,track,spotify:track:2Ed07HGaDuZGrDYAFG1BdC,https://open.spotify.com/track/2Ed07HGaDuZGrDYAFG1BdC,Frank,A,minor,A minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.722,0.414,2,-9.291,1,0.081,0.229,1.2e-6,0.974,0.439,74.072,27w2s06PaPuFOHsNn1m3xP,https://api.spotify.com/v1/audio-analysis/27w2s06PaPuFOHsNn1m3xP,4,,,1,147226,FALSE,https://api.spotify.com/v1/tracks/27w2s06PaPuFOHsNn1m3xP,FALSE,I Heard Love Is Blind - Live,NA,9,track,spotify:track:27w2s06PaPuFOHsNn1m3xP,https://open.spotify.com/track/27w2s06PaPuFOHsNn1m3xP,Frank,D,major,D major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.574,0.403,8,-7.703,0,0.0709,0.21,0,0.947,0.356,119.881,6adICOPagYgADiqjZ1pXaf,https://api.spotify.com/v1/audio-analysis/6adICOPagYgADiqjZ1pXaf,4,,,1,211946,FALSE,https://api.spotify.com/v1/tracks/6adICOPagYgADiqjZ1pXaf,FALSE,"Take The Box - Live At Concorde, Brighton / 2008",NA,10,track,spotify:track:6adICOPagYgADiqjZ1pXaf,https://open.spotify.com/track/6adICOPagYgADiqjZ1pXaf,Frank,G#,minor,G# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.456,0.732,10,-7.273,0,0.0607,0.0513,1.18e-5,0.987,0.687,128.04,0yh9uGMsGZcjJIcC5Wex5Q,https://api.spotify.com/v1/audio-analysis/0yh9uGMsGZcjJIcC5Wex5Q,5,,,1,335760,FALSE,https://api.spotify.com/v1/tracks/0yh9uGMsGZcjJIcC5Wex5Q,FALSE,In My Bed - Live At Concorde - Brighton/2008,NA,11,track,spotify:track:0yh9uGMsGZcjJIcC5Wex5Q,https://open.spotify.com/track/0yh9uGMsGZcjJIcC5Wex5Q,Frank,A#,minor,A# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.396,0.73,7,-6.17,0,0.268,0.101,0,0.965,0.585,202.013,2YSf96zfNrRJXQJrZm8aJp,https://api.spotify.com/v1/audio-analysis/2YSf96zfNrRJXQJrZm8aJp,4,,,1,243533,FALSE,https://api.spotify.com/v1/tracks/2YSf96zfNrRJXQJrZm8aJp,FALSE,"Mr Magic (Through The Smoke) - Live, Janice Long Session, Miami/2008",NA,12,track,spotify:track:2YSf96zfNrRJXQJrZm8aJp,https://open.spotify.com/track/2YSf96zfNrRJXQJrZm8aJp,Frank,G,minor,G minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.444,0.256,5,-10.109,1,0.0541,0.782,4.12e-5,0.961,0.314,144.507,0kpPxQjVSor94FMvKwlI5G,https://api.spotify.com/v1/audio-analysis/0kpPxQjVSor94FMvKwlI5G,4,,,1,156960,FALSE,https://api.spotify.com/v1/tracks/0kpPxQjVSor94FMvKwlI5G,FALSE,"(There Is) No Greater Love - Live, Janice Long Session, Miami/2008",NA,13,track,spotify:track:0kpPxQjVSor94FMvKwlI5G,https://open.spotify.com/track/0kpPxQjVSor94FMvKwlI5G,Frank,F,major,F major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.865,0.917,2,-7.348,1,0.0677,0.0125,3.94e-4,0.19,0.751,132.05,2ZaAlV7GCjWl8I2igCCEiF,https://api.spotify.com/v1/audio-analysis/2ZaAlV7GCjWl8I2igCCEiF,4,,,1,353173,TRUE,https://api.spotify.com/v1/tracks/2ZaAlV7GCjWl8I2igCCEiF,FALSE,Fuck Me Pumps - MJ Cole Remix,NA,14,track,spotify:track:2ZaAlV7GCjWl8I2igCCEiF,https://open.spotify.com/track/2ZaAlV7GCjWl8I2igCCEiF,Frank,D,major,D major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.859,0.762,8,-9.851,0,0.068,0.0744,0.161,0.154,0.698,123.986,5BKF55fIGu4kObMi1uf2xb,https://api.spotify.com/v1/audio-analysis/5BKF55fIGu4kObMi1uf2xb,4,,,1,466786,FALSE,https://api.spotify.com/v1/tracks/5BKF55fIGu4kObMi1uf2xb,FALSE,Take The Box - Seijis Buggin' Mix,NA,15,track,spotify:track:5BKF55fIGu4kObMi1uf2xb,https://open.spotify.com/track/5BKF55fIGu4kObMi1uf2xb,Frank,G#,minor,G# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.769,0.548,10,-6.201,0,0.0847,0.00406,0.14,0.313,0.605,91.415,6F8p3QBRcjmTZhfIzq1rMr,https://api.spotify.com/v1/audio-analysis/6F8p3QBRcjmTZhfIzq1rMr,4,,,1,222080,FALSE,https://api.spotify.com/v1/tracks/6F8p3QBRcjmTZhfIzq1rMr,FALSE,Stronger Than Me - Harmonic 33 Remix,NA,16,track,spotify:track:6F8p3QBRcjmTZhfIzq1rMr,https://open.spotify.com/track/6F8p3QBRcjmTZhfIzq1rMr,Frank,A#,minor,A# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,2poSmwqkBX2RE1Z7eQoU5c,album,,2008-01-01,2008,day,0.751,0.767,10,-3.173,0,0.0308,0.0181,3.28e-4,0.319,0.851,96.358,6lVj1zzqaLQjVqXY6FacpK,https://api.spotify.com/v1/audio-analysis/6lVj1zzqaLQjVqXY6FacpK,4,,,1,276440,FALSE,https://api.spotify.com/v1/tracks/6lVj1zzqaLQjVqXY6FacpK,FALSE,In My Bed - CJ Mix,NA,17,track,spotify:track:6lVj1zzqaLQjVqXY6FacpK,https://open.spotify.com/track/6lVj1zzqaLQjVqXY6FacpK,Frank,A#,minor,A# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.407,0.558,0,-13.609,1,0.0552,0.0541,1.51e-6,0.34,0.777,71.815,3N4DI1vuTSX1tz7fa2NQZw,https://api.spotify.com/v1/audio-analysis/3N4DI1vuTSX1tz7fa2NQZw,4,,,1,214946,FALSE,https://api.spotify.com/v1/tracks/3N4DI1vuTSX1tz7fa2NQZw,FALSE,Rehab,NA,1,track,spotify:track:3N4DI1vuTSX1tz7fa2NQZw,https://open.spotify.com/track/3N4DI1vuTSX1tz7fa2NQZw,Back To Black (Deluxe Edition),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.694,0.496,9,-14.222,1,0.0329,0.0139,0.00356,0.0644,0.799,103.372,0DMRKqrpd0QO4RWiEdMib0,https://api.spotify.com/v1/audio-analysis/0DMRKqrpd0QO4RWiEdMib0,4,,,1,257186,FALSE,https://api.spotify.com/v1/tracks/0DMRKqrpd0QO4RWiEdMib0,FALSE,You Know I'm No Good,NA,2,track,spotify:track:0DMRKqrpd0QO4RWiEdMib0,https://open.spotify.com/track/0DMRKqrpd0QO4RWiEdMib0,Back To Black (Deluxe Edition),A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.583,0.486,4,-13.165,1,0.0759,0.518,0,0.0665,0.513,87.837,0RfzQhbvtn5lOaKdhpAni7,https://api.spotify.com/v1/audio-analysis/0RfzQhbvtn5lOaKdhpAni7,4,,,1,153173,TRUE,https://api.spotify.com/v1/tracks/0RfzQhbvtn5lOaKdhpAni7,FALSE,Me & Mr Jones,NA,3,track,spotify:track:0RfzQhbvtn5lOaKdhpAni7,https://open.spotify.com/track/0RfzQhbvtn5lOaKdhpAni7,Back To Black (Deluxe Edition),E,major,E major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.749,0.462,9,-15.449,1,0.0452,0.0417,0.0262,0.2,0.564,95.487,2WsHmmKc1U4IbTzeGUu1Ks,https://api.spotify.com/v1/audio-analysis/2WsHmmKc1U4IbTzeGUu1Ks,4,,,1,193306,TRUE,https://api.spotify.com/v1/tracks/2WsHmmKc1U4IbTzeGUu1Ks,FALSE,Just Friends,NA,4,track,spotify:track:2WsHmmKc1U4IbTzeGUu1Ks,https://open.spotify.com/track/2WsHmmKc1U4IbTzeGUu1Ks,Back To Black (Deluxe Edition),A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.403,0.422,7,-13.964,0,0.0373,0.134,2.05e-5,0.0861,0.378,122.728,3FAclTFfvUuQYnEsptbK8w,https://api.spotify.com/v1/audio-analysis/3FAclTFfvUuQYnEsptbK8w,4,,,1,241293,TRUE,https://api.spotify.com/v1/tracks/3FAclTFfvUuQYnEsptbK8w,FALSE,Back To Black,NA,5,track,spotify:track:3FAclTFfvUuQYnEsptbK8w,https://open.spotify.com/track/3FAclTFfvUuQYnEsptbK8w,Back To Black (Deluxe Edition),G,minor,G minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.484,0.293,0,-16.544,1,0.0311,0.337,0.00627,0.146,0.562,165.008,3uliGwmB52ZA7brgpZMzyH,https://api.spotify.com/v1/audio-analysis/3uliGwmB52ZA7brgpZMzyH,4,,,1,155413,FALSE,https://api.spotify.com/v1/tracks/3uliGwmB52ZA7brgpZMzyH,FALSE,Love Is A Losing Game,NA,6,track,spotify:track:3uliGwmB52ZA7brgpZMzyH,https://open.spotify.com/track/3uliGwmB52ZA7brgpZMzyH,Back To Black (Deluxe Edition),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.634,0.543,1,-13.391,0,0.181,0.525,0,0.232,0.467,121.557,7MDfN1ldfTMtuXXdVz2Pzc,https://api.spotify.com/v1/audio-analysis/7MDfN1ldfTMtuXXdVz2Pzc,4,,,1,186440,TRUE,https://api.spotify.com/v1/tracks/7MDfN1ldfTMtuXXdVz2Pzc,FALSE,Tears Dry On Their Own,NA,7,track,spotify:track:7MDfN1ldfTMtuXXdVz2Pzc,https://open.spotify.com/track/7MDfN1ldfTMtuXXdVz2Pzc,Back To Black (Deluxe Edition),C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.583,0.271,11,-15.866,0,0.0299,0.545,0,0.148,0.235,102.678,2pxCOdnHEZZ3A1XRNxjc1v,https://api.spotify.com/v1/audio-analysis/2pxCOdnHEZZ3A1XRNxjc1v,3,,,1,222000,FALSE,https://api.spotify.com/v1/tracks/2pxCOdnHEZZ3A1XRNxjc1v,FALSE,Wake Up Alone,NA,8,track,spotify:track:2pxCOdnHEZZ3A1XRNxjc1v,https://open.spotify.com/track/2pxCOdnHEZZ3A1XRNxjc1v,Back To Black (Deluxe Edition),B,minor,B minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.489,0.435,9,-15.558,0,0.163,0.0856,3.91e-5,0.113,0.455,175.865,5DEitTu33CUjozBijXiLNb,https://api.spotify.com/v1/audio-analysis/5DEitTu33CUjozBijXiLNb,4,,,1,142693,FALSE,https://api.spotify.com/v1/tracks/5DEitTu33CUjozBijXiLNb,FALSE,Some Unholy War,NA,9,track,spotify:track:5DEitTu33CUjozBijXiLNb,https://open.spotify.com/track/5DEitTu33CUjozBijXiLNb,Back To Black (Deluxe Edition),A,minor,A minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.626,0.504,11,-14.978,1,0.073,0.021,0.00843,0.0684,0.713,98.391,3eVo0wD4kGwF3gshtecZso,https://api.spotify.com/v1/audio-analysis/3eVo0wD4kGwF3gshtecZso,4,,,1,166400,FALSE,https://api.spotify.com/v1/tracks/3eVo0wD4kGwF3gshtecZso,FALSE,He Can Only Hold Her,NA,10,track,spotify:track:3eVo0wD4kGwF3gshtecZso,https://open.spotify.com/track/3eVo0wD4kGwF3gshtecZso,Back To Black (Deluxe Edition),B,major,B major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.779,0.513,8,-14.444,1,0.0506,0.00191,0.017,0.102,0.788,107.988,7EzafK3PjsWEICREII1WXg,https://api.spotify.com/v1/audio-analysis/7EzafK3PjsWEICREII1WXg,4,,,1,165120,FALSE,https://api.spotify.com/v1/tracks/7EzafK3PjsWEICREII1WXg,FALSE,Addicted,NA,11,track,spotify:track:7EzafK3PjsWEICREII1WXg,https://open.spotify.com/track/7EzafK3PjsWEICREII1WXg,Back To Black (Deluxe Edition),G#,major,G# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.772,0.371,5,-5.743,0,0.0348,0.744,0,0.167,0.684,96.574,6nLvaCZFR1wEzW3sIKpsnr,https://api.spotify.com/v1/audio-analysis/6nLvaCZFR1wEzW3sIKpsnr,4,,,2,233733,FALSE,https://api.spotify.com/v1/tracks/6nLvaCZFR1wEzW3sIKpsnr,FALSE,"Valerie - Live At BBC Radio 1 Live Lounge, London / 2007",NA,1,track,spotify:track:6nLvaCZFR1wEzW3sIKpsnr,https://open.spotify.com/track/6nLvaCZFR1wEzW3sIKpsnr,Back To Black (Deluxe Edition),F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.641,0.609,7,-4.596,1,0.0638,0.163,0,0.0811,0.696,87.181,5kG1ARHk8dli0bKiMN2oE6,https://api.spotify.com/v1/audio-analysis/5kG1ARHk8dli0bKiMN2oE6,4,,,2,228853,FALSE,https://api.spotify.com/v1/tracks/5kG1ARHk8dli0bKiMN2oE6,FALSE,Cupid - Deluxe Edition Version,NA,2,track,spotify:track:5kG1ARHk8dli0bKiMN2oE6,https://open.spotify.com/track/5kG1ARHk8dli0bKiMN2oE6,Back To Black (Deluxe Edition),G,major,G major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.613,0.852,10,-2.83,1,0.0709,0.236,0,0.102,0.923,146.523,52fqquVYihRW17ySEcy5mA,https://api.spotify.com/v1/audio-analysis/52fqquVYihRW17ySEcy5mA,4,,,2,176320,FALSE,https://api.spotify.com/v1/tracks/52fqquVYihRW17ySEcy5mA,FALSE,Monkey Man,NA,3,track,spotify:track:52fqquVYihRW17ySEcy5mA,https://open.spotify.com/track/52fqquVYihRW17ySEcy5mA,Back To Black (Deluxe Edition),A#,major,A# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.54,0.505,5,-8.325,1,0.0348,0.491,9.46e-5,0.0893,0.27,78.186,5OlM5krdWS4ivOGVz3X8c0,https://api.spotify.com/v1/audio-analysis/5OlM5krdWS4ivOGVz3X8c0,3,,,2,196080,FALSE,https://api.spotify.com/v1/tracks/5OlM5krdWS4ivOGVz3X8c0,FALSE,Some Unholy War - Down Tempo,NA,4,track,spotify:track:5OlM5krdWS4ivOGVz3X8c0,https://open.spotify.com/track/5OlM5krdWS4ivOGVz3X8c0,Back To Black (Deluxe Edition),F,major,F major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.383,0.909,10,-1.412,1,0.111,0.223,0,0.387,0.721,146.169,6huXEunO4jEFn9Q7WLoMZs,https://api.spotify.com/v1/audio-analysis/6huXEunO4jEFn9Q7WLoMZs,4,,,2,215000,FALSE,https://api.spotify.com/v1/tracks/6huXEunO4jEFn9Q7WLoMZs,FALSE,Hey Little Rich Girl,NA,5,track,spotify:track:6huXEunO4jEFn9Q7WLoMZs,https://open.spotify.com/track/6huXEunO4jEFn9Q7WLoMZs,Back To Black (Deluxe Edition),A#,major,A# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.787,0.567,0,-4.767,1,0.179,0.0693,0,0.161,0.917,133.914,7ee1XEOzZgzTQWNaiHZvKY,https://api.spotify.com/v1/audio-analysis/7ee1XEOzZgzTQWNaiHZvKY,4,,,2,153413,FALSE,https://api.spotify.com/v1/tracks/7ee1XEOzZgzTQWNaiHZvKY,FALSE,You're Wondering Now,NA,6,track,spotify:track:7ee1XEOzZgzTQWNaiHZvKY,https://open.spotify.com/track/7ee1XEOzZgzTQWNaiHZvKY,Back To Black (Deluxe Edition),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.479,0.196,7,-8.667,0,0.0476,0.934,1.22e-4,0.0827,0.366,170.407,1Nz1PPjU3ONNEgjg8Pkppg,https://api.spotify.com/v1/audio-analysis/1Nz1PPjU3ONNEgjg8Pkppg,3,,,2,145066,FALSE,https://api.spotify.com/v1/tracks/1Nz1PPjU3ONNEgjg8Pkppg,FALSE,To Know Him Is To Love Him - Live,NA,7,track,spotify:track:1Nz1PPjU3ONNEgjg8Pkppg,https://open.spotify.com/track/1Nz1PPjU3ONNEgjg8Pkppg,Back To Black (Deluxe Edition),G,minor,G minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0E4xv5gPjykrwBgBZzI8XG,album,,2006,2006,year,0.592,0.0393,0,-10.944,1,0.0455,0.966,6.77e-5,0.157,0.208,113.296,113iEwaI5Se6Q287iXOIJy,https://api.spotify.com/v1/audio-analysis/113iEwaI5Se6Q287iXOIJy,4,,,2,223893,FALSE,https://api.spotify.com/v1/tracks/113iEwaI5Se6Q287iXOIJy,FALSE,Love Is A Losing Game - Original Demo,NA,8,track,spotify:track:113iEwaI5Se6Q287iXOIJy,https://open.spotify.com/track/113iEwaI5Se6Q287iXOIJy,Back To Black (Deluxe Edition),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.647,0.0141,8,-20.468,1,0.0514,0.852,0.0243,0.114,0.649,91.415,0GtwAiRwzhVIBnFWQQgTU5,https://api.spotify.com/v1/audio-analysis/0GtwAiRwzhVIBnFWQQgTU5,1,,,1,22800,FALSE,https://api.spotify.com/v1/tracks/0GtwAiRwzhVIBnFWQQgTU5,FALSE,Intro,NA,1,track,spotify:track:0GtwAiRwzhVIBnFWQQgTU5,https://open.spotify.com/track/0GtwAiRwzhVIBnFWQQgTU5,Frank (US Clean e-Version),G#,major,G# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.884,0.51,9,-4.679,0,0.0392,0.0436,3.33e-4,0.0615,0.855,91.453,5FNDpQSkgFiRdUKGfagIRJ,https://api.spotify.com/v1/audio-analysis/5FNDpQSkgFiRdUKGfagIRJ,4,,,1,211986,FALSE,https://api.spotify.com/v1/tracks/5FNDpQSkgFiRdUKGfagIRJ,FALSE,Stronger Than Me,NA,2,track,spotify:track:5FNDpQSkgFiRdUKGfagIRJ,https://open.spotify.com/track/5FNDpQSkgFiRdUKGfagIRJ,Frank (US Clean e-Version),A,minor,A minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.754,0.623,0,-5.999,0,0.0507,0.539,0,0.114,0.325,99.988,7pI0ZeIVWiH35cUwzWIWM9,https://api.spotify.com/v1/audio-analysis/7pI0ZeIVWiH35cUwzWIWM9,4,,,1,318333,FALSE,https://api.spotify.com/v1/tracks/7pI0ZeIVWiH35cUwzWIWM9,FALSE,You Sent Me Flying,NA,3,track,spotify:track:7pI0ZeIVWiH35cUwzWIWM9,https://open.spotify.com/track/7pI0ZeIVWiH35cUwzWIWM9,Frank (US Clean e-Version),C,minor,C minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.669,0.63,9,-10.625,1,0.532,0.375,1.59e-6,0.446,0.855,172.097,2POV95aTLpGmjDWRVZabGM,https://api.spotify.com/v1/audio-analysis/2POV95aTLpGmjDWRVZabGM,4,,,1,92413,FALSE,https://api.spotify.com/v1/tracks/2POV95aTLpGmjDWRVZabGM,FALSE,Cherry,NA,4,track,spotify:track:2POV95aTLpGmjDWRVZabGM,https://open.spotify.com/track/2POV95aTLpGmjDWRVZabGM,Frank (US Clean e-Version),A,major,A major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.846,0.669,5,-6.44,0,0.0736,0.0372,0.00266,0.0812,0.756,140.686,0UVTzpqtuQpuZCd7ZeZeTj,https://api.spotify.com/v1/audio-analysis/0UVTzpqtuQpuZCd7ZeZeTj,4,,,1,183120,FALSE,https://api.spotify.com/v1/tracks/0UVTzpqtuQpuZCd7ZeZeTj,FALSE,Know You Now,NA,5,track,spotify:track:0UVTzpqtuQpuZCd7ZeZeTj,https://open.spotify.com/track/0UVTzpqtuQpuZCd7ZeZeTj,Frank (US Clean e-Version),F,minor,F minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.9,0.319,7,-13.453,1,0.132,0.127,0,0.24,0.664,102.899,1YIfvogCtrfiLFOuKhBaRl,https://api.spotify.com/v1/audio-analysis/1YIfvogCtrfiLFOuKhBaRl,4,,,1,200146,FALSE,https://api.spotify.com/v1/tracks/1YIfvogCtrfiLFOuKhBaRl,FALSE,F*** Me Pumps - US Clean Version,NA,6,track,spotify:track:1YIfvogCtrfiLFOuKhBaRl,https://open.spotify.com/track/1YIfvogCtrfiLFOuKhBaRl,Frank (US Clean e-Version),G,major,G major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.494,0.304,2,-10.33,1,0.0772,0.763,0,0.126,0.267,74.87,3Li4nWTnkUu19vxkhNW9td,https://api.spotify.com/v1/audio-analysis/3Li4nWTnkUu19vxkhNW9td,4,,,1,130066,FALSE,https://api.spotify.com/v1/tracks/3Li4nWTnkUu19vxkhNW9td,FALSE,I Heard Love Is Blind,NA,7,track,spotify:track:3Li4nWTnkUu19vxkhNW9td,https://open.spotify.com/track/3Li4nWTnkUu19vxkhNW9td,Frank (US Clean e-Version),D,major,D major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.543,0.63,7,-6.668,1,0.213,0.0577,1.35e-6,0.138,0.487,149.37,1AkjqeVykfz4wXpaVCkv8x,https://api.spotify.com/v1/audio-analysis/1AkjqeVykfz4wXpaVCkv8x,4,,,1,169933,FALSE,https://api.spotify.com/v1/tracks/1AkjqeVykfz4wXpaVCkv8x,FALSE,Moody's Mood For Love,NA,8,track,spotify:track:1AkjqeVykfz4wXpaVCkv8x,https://open.spotify.com/track/1AkjqeVykfz4wXpaVCkv8x,Frank (US Clean e-Version),G,major,G major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.859,0.0999,8,-16.753,1,0.166,0.285,0.914,0.11,0.308,115.937,6IqhxPxds9Wrm63slCROHO,https://api.spotify.com/v1/audio-analysis/6IqhxPxds9Wrm63slCROHO,4,,,1,39026,FALSE,https://api.spotify.com/v1/tracks/6IqhxPxds9Wrm63slCROHO,FALSE,Teo Licks,NA,9,track,spotify:track:6IqhxPxds9Wrm63slCROHO,https://open.spotify.com/track/6IqhxPxds9Wrm63slCROHO,Frank (US Clean e-Version),G#,major,G# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.388,0.238,1,-12.887,0,0.0492,0.93,1.06e-5,0.0966,0.244,138.156,4VbqUDBWyK15pTal9THtFu,https://api.spotify.com/v1/audio-analysis/4VbqUDBWyK15pTal9THtFu,4,,,1,128933,FALSE,https://api.spotify.com/v1/tracks/4VbqUDBWyK15pTal9THtFu,FALSE,(There Is) No Greater Love,NA,10,track,spotify:track:4VbqUDBWyK15pTal9THtFu,https://open.spotify.com/track/4VbqUDBWyK15pTal9THtFu,Frank (US Clean e-Version),C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.539,0.809,10,-8.851,0,0.0683,0.114,1.02e-5,0.0715,0.724,95.631,4o2d25zcVbx5BEaHcKbtOI,https://api.spotify.com/v1/audio-analysis/4o2d25zcVbx5BEaHcKbtOI,4,,,1,317000,FALSE,https://api.spotify.com/v1/tracks/4o2d25zcVbx5BEaHcKbtOI,FALSE,In My Bed,NA,11,track,spotify:track:4o2d25zcVbx5BEaHcKbtOI,https://open.spotify.com/track/4o2d25zcVbx5BEaHcKbtOI,Frank (US Clean e-Version),A#,minor,A# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.633,0.5,1,-8.008,0,0.0387,0.0163,4.71e-6,0.112,0.157,115.822,0vlOooGJoEdbOGYt7ctoaF,https://api.spotify.com/v1/audio-analysis/0vlOooGJoEdbOGYt7ctoaF,4,,,1,200200,FALSE,https://api.spotify.com/v1/tracks/0vlOooGJoEdbOGYt7ctoaF,FALSE,Take The Box - Album Version (Edited),NA,12,track,spotify:track:0vlOooGJoEdbOGYt7ctoaF,https://open.spotify.com/track/0vlOooGJoEdbOGYt7ctoaF,Frank (US Clean e-Version),C#,minor,C# minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.672,0.842,0,-7.673,1,0.256,0.0112,0.135,0.0381,0.694,147.093,1oP9MTgQc5qHhamMCt4sky,https://api.spotify.com/v1/audio-analysis/1oP9MTgQc5qHhamMCt4sky,3,,,1,205066,FALSE,https://api.spotify.com/v1/tracks/1oP9MTgQc5qHhamMCt4sky,FALSE,October Song,NA,13,track,spotify:track:1oP9MTgQc5qHhamMCt4sky,https://open.spotify.com/track/1oP9MTgQc5qHhamMCt4sky,Frank (US Clean e-Version),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.749,0.525,11,-7.041,0,0.065,0.35,8.9e-6,0.212,0.504,76.447,0q9SlVJ8Ygh01jmZNsbDa8,https://api.spotify.com/v1/audio-analysis/0q9SlVJ8Ygh01jmZNsbDa8,4,,,1,209306,FALSE,https://api.spotify.com/v1/tracks/0q9SlVJ8Ygh01jmZNsbDa8,FALSE,What Is It About Men,NA,14,track,spotify:track:0q9SlVJ8Ygh01jmZNsbDa8,https://open.spotify.com/track/0q9SlVJ8Ygh01jmZNsbDa8,Frank (US Clean e-Version),B,minor,B minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.719,0.54,0,-8.718,1,0.242,0.0373,6.46e-5,0.0817,0.613,80.039,603FH2sLZj6p8zgl4UPkmu,https://api.spotify.com/v1/audio-analysis/603FH2sLZj6p8zgl4UPkmu,4,,,1,254600,FALSE,https://api.spotify.com/v1/tracks/603FH2sLZj6p8zgl4UPkmu,FALSE,Amy Amy Amy,NA,15,track,spotify:track:603FH2sLZj6p8zgl4UPkmu,https://open.spotify.com/track/603FH2sLZj6p8zgl4UPkmu,Frank (US Clean e-Version),C,major,C major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.655,0.557,7,-12.639,0,0.138,0.456,0.00271,0.0682,0.714,121.096,56FUhbh4zJYYWaZXRUoAN7,https://api.spotify.com/v1/audio-analysis/56FUhbh4zJYYWaZXRUoAN7,5,,,1,44093,FALSE,https://api.spotify.com/v1/tracks/56FUhbh4zJYYWaZXRUoAN7,FALSE,Outro,NA,16,track,spotify:track:56FUhbh4zJYYWaZXRUoAN7,https://open.spotify.com/track/56FUhbh4zJYYWaZXRUoAN7,Frank (US Clean e-Version),G,minor,G minor Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.732,0.398,6,-11.108,1,0.274,0.216,1.49e-4,0.12,0.63,83.701,0s0YP92SuqVbaGoggFGJEd,https://api.spotify.com/v1/audio-analysis/0s0YP92SuqVbaGoggFGJEd,4,,,1,253946,FALSE,https://api.spotify.com/v1/tracks/0s0YP92SuqVbaGoggFGJEd,FALSE,Brother,NA,17,track,spotify:track:0s0YP92SuqVbaGoggFGJEd,https://open.spotify.com/track/0s0YP92SuqVbaGoggFGJEd,Frank (US Clean e-Version),F#,major,F# major Amy Winehouse,6Q192DXotxtaysaqNPy5yR,0RisvCe4jLWes0m89StnuZ,album,,2003,2003,year,0.587,0.519,5,-7.304,0,0.069,0.0141,0.0184,0.102,0.558,96.508,4bjmPbbudPDelbHzL8dxh2,https://api.spotify.com/v1/audio-analysis/4bjmPbbudPDelbHzL8dxh2,4,,,1,235933,FALSE,https://api.spotify.com/v1/tracks/4bjmPbbudPDelbHzL8dxh2,FALSE,Mr Magic (Through The Smoke),NA,18,track,spotify:track:4bjmPbbudPDelbHzL8dxh2,https://open.spotify.com/track/4bjmPbbudPDelbHzL8dxh2,Frank (US Clean e-Version),F,minor,F minor ================================================ FILE: Getting started with simple linear regression/README.md ================================================ # Getting started with simple linear regression in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Getting started with simple linear regression in R**, which you can find at . ================================================ FILE: Git branches and merges/README.md ================================================ # Git for R users: branches and merges []() Hi everybody! In this folder, you'll find materials supporting my vid, **Git for R users: branches and merges**, which you can find at . ================================================ FILE: Git branches and merges/pivot longer.R ================================================ # pivot longer: billboard library(tidyverse) # the pivot billboard_long <- billboard %>% pivot_longer(cols = starts_with("wk"), names_to = "week", values_to = "rank", names_prefix = "wk", values_drop_na = TRUE) %>% mutate(week = as.numeric(week)) glimpse(billboard_long) # which tracks lasted at least 52 weeks? all_year <- billboard_long %>% count(track) %>% filter(n >= 52) all_year # filter for these tracks and add real date of chart billboard_top4 <- billboard_long %>% filter(track %in% all_year$track) %>% mutate(Date = date.entered + 7 * week - 7) # the plot ggplot(billboard_top4, aes(x = Date, y = rank, color = track)) + geom_line() + labs(y = "Rank", color = "Song title", title = "Popular songs of 2000") + scale_color_brewer(palette = "Dark2") + theme_minimal() ================================================ FILE: Git branches and merges/pivot wider.R ================================================ # pivot wider: table2 # load packages library(tidyverse) # the problem table2 # the solution table2 %>% pivot_wider(names_from = type, values_from = count) ================================================ FILE: Git setup/README.md ================================================ # Git for R users: setup []() Hi everybody! In this folder, you'll find materials supporting my vid, **Git for R users: setup**, which you can find at . ================================================ FILE: Git setup/git for R users.R ================================================ # First install git. # Mac: Enter `git config` in the terminal # Windows: https://gitforwindows.org/ # Setup ------------------------------------------------------------------- library(usethis) use_git_config(user.name = "Your Name", user.email = "your@email.com") ================================================ FILE: Goodness of fit testing example/README.md ================================================ # Goodness of fit testing with R - example []() Hi everybody! In this folder, you'll find materials supporting my vid, **Goodness of fit testing with R - example**, which you can find at . ================================================ FILE: Goodness of fit testing example/Script - goodness of fit example.R ================================================ # Goodness of fit testing example obs <- c(12, 31, 36, 21) exp_props <- dbinom(0:3, 3, .5) exp_props exp <- exp_props * 100 exp chisq.test(obs, p = exp_props) chi_stat <- sum((obs - exp)^2 / exp) chi_stat p <- 1 - pchisq(chi_stat, 3) p ================================================ FILE: Graphing functions/README.md ================================================ # Graphing functions in R using ggplot []() Hi everybody! In this folder, you'll find materials supporting my vid, **Graphing functions in R using ggplot**, which you can find at . ================================================ FILE: Graphing functions/script - graphing functions.R ================================================ # Plotting functions with ggplot() library(tidyverse) ggplot() + xlim(c(-3, 3)) + geom_function(fun = dnorm) ggplot() + xlim(c(-3, 3)) + geom_function(fun = dnorm, args = list(mean = .1, sd = 1.5)) + labs(y = NULL) + theme_bw() ggplot() + xlim(c(-2, 2)) + geom_function(fun = function(x) x^2) + labs(y = NULL) + theme_bw() ggplot() + xlim(c(-2, 2)) + geom_function(fun = function(x) x^2, aes(color = "Second degree")) + geom_function(fun = function(x) x^3, aes(color = "Third degree")) + labs(color = "Degree", y = NULL) + theme_bw() set.seed(1) data <- rnorm(250) df <- data.frame(data) width <- .2 area <- width * length(data) ggplot(df, aes(x = data)) + geom_histogram(binwidth = width, col = "blue", fill = "lightblue") + geom_function(fun = function(x) area * dnorm(x), col = "black") + theme_bw() ================================================ FILE: How to add annotations/README.md ================================================ # How to add annotations to ggplots in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **How to add annotations to ggplots in R**, which you can find at . ================================================ FILE: How to add annotations/Script - annotate.R ================================================ library(tidyverse) theme_set(theme_minimal()) set.seed(1) t <- slice_sample(trees, n = 5) p <- ggplot(t, aes(x = Girth, y = Height)) + geom_point() p p + annotate(geom = "text", x = 16, y = 75.5, label = "Outlier") p + annotate(geom = "label", x = 14, y = 71.5, label = "Outlier") + annotate(geom = "segment", x = 14, y = 72, xend = 16.1, yend = 76.5, arrow = arrow()) + annotate(geom = "rect", xmin = 8, xmax = 11.5, ymin = 64.5, ymax = 72.5, alpha = .1, color = "darkgreen", fill = "green") ================================================ FILE: How to add color to R ggplots/README.md ================================================ # How to add colors to R ggplots []() Hi everybody! In this folder, you'll find materials supporting my vid, **How to add colors to R ggplots**, which you can find at . ================================================ FILE: How to add color to R ggplots/script - how to add color to R ggplots.R ================================================ # Better use of color in R library(tidyverse) theme_set(theme_minimal()) view(mpg) ggplot(mpg, aes(x = cty, y = hwy)) + geom_point(color = "seashell") colors() ggplot(mpg, aes(x = cty)) + geom_histogram(color = "red", fill = "pink") ggplot(mpg, aes(x = cty, y = hwy)) + geom_point(color = "#6e31d6") ggplot(mpg, aes(x = cty)) + geom_histogram(color = "#be1529", fill = "#b6a960") qplot(mpg$cty, geom = "histogram", fill = I("#be1529")) ================================================ FILE: How to create an other category/README.md ================================================ # How to create an "other" category in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **How to create an "other" category in R**, which you can find at . ================================================ FILE: How to create an other category/lumping variables.R ================================================ # creating an 'other' category library(tidyverse) ?fct_lump quitting <- read_csv("quitting.csv") View(quitting) ggplot(quitting, aes(x = reason, fill = reason)) + geom_bar(show.legend = FALSE) + scale_fill_brewer(palette = "Dark2") quitting <- quitting %>% mutate(reason = fct_infreq(reason)) fct_lump_n(quitting$reason, n = 4, other_level = "other") quitting <- quitting %>% mutate(reason_lumped = fct_lump_n(quitting$reason, n = 4, other_level = "other")) ggplot(quitting, aes(x = reason_lumped, fill = reason_lumped)) + geom_bar(show.legend = FALSE) + scale_fill_brewer(palette = "Dark2") quitting <- quitting %>% mutate(reason_lumped = fct_lump_lowfreq(quitting$reason, other_level = "other")) ================================================ FILE: How to create an other category/quitting.csv ================================================ employee_id,reason 905892,bored 902948,salary 905732,no_advancement 901026,bored 901560,dislike_boss 903671,dislike_boss 903723,dislike_boss 905577,salary 905384,dislike_boss 903936,no_advancement 905239,salary 902582,low_recognition 905291,dislike_boss 902746,low_recognition 904765,dislike_boss 902016,bored 901308,low_recognition 901250,low_recognition 901887,bored 904114,dislike_boss 903222,dont_know 903692,salary 904530,no_advancement 904732,salary 902597,salary 901212,low_recognition 904563,dislike_boss 905649,salary 901500,no_advancement 902087,salary 905720,dislike_boss 903760,no_advancement 902160,dislike_boss 901858,no_advancement 904571,dislike_boss 902070,low_recognition 901014,salary 901502,salary 904926,health 903094,no_advancement 903540,no_advancement 903438,dislike_boss 903863,bored 901978,low_recognition 904151,dislike_boss 905150,bored 903283,no_advancement 904664,health 901609,no_advancement 901489,salary 903115,salary 901655,salary 905774,dislike_boss 903021,salary 905326,dislike_boss 904701,dislike_boss 902251,low_recognition 903825,low_recognition 904187,low_recognition 903390,salary 903677,salary 901412,bored 901202,bored 901478,dislike_boss 902545,unsafe_environment 902036,salary 903468,dont_know 901138,low_recognition 902258,bored 902435,dislike_boss 905013,dislike_boss 905900,dislike_boss 905102,salary 905894,salary 905813,salary 902653,bored 901426,low_recognition 901862,bored 904792,no_advancement 904198,low_recognition 905361,no_advancement 902715,salary 904436,dislike_boss 901581,dislike_boss 901575,no_advancement 902816,dislike_boss 904113,dislike_boss 901224,low_recognition 903955,dislike_boss 904059,low_recognition 901184,low_recognition 903840,no_advancement 903425,low_recognition 905608,no_advancement 905082,no_advancement 901244,unsafe_environment 902056,unsafe_environment 904678,dislike_boss 903887,dislike_boss 904841,no_advancement 905710,salary 903927,low_recognition 901449,dislike_boss 901664,dislike_boss 902669,no_advancement 901613,low_recognition 904312,no_advancement 902089,bored 902248,dislike_boss 904714,no_advancement 902797,no_advancement 905835,no_advancement 905588,no_advancement 905595,salary 903402,no_advancement 901038,no_advancement 904832,dislike_boss 902551,dislike_boss 904175,bored 901720,salary 905753,dislike_boss 902960,low_recognition 902431,salary 901385,dislike_boss 903954,low_recognition 905459,salary 902043,no_advancement 903842,unsafe_environment 901326,low_recognition 905038,bored 904799,salary 902310,salary 904329,salary 901836,no_advancement 902204,salary 904564,salary 904236,low_recognition 902767,salary 905037,no_advancement 903295,dislike_boss 901434,dislike_boss 902692,no_advancement 904315,no_advancement 903186,unsafe_environment 901837,salary 904211,salary 903489,bored 905473,dislike_boss 905702,bored 905648,salary 905629,salary 904976,bored 904877,salary 901555,dislike_boss 904321,dislike_boss 904002,low_recognition 905345,salary 901305,no_advancement 903434,salary 901944,no_advancement 903771,low_recognition 905825,bored 902278,low_recognition 901748,low_recognition 905285,salary 901223,dislike_boss 903506,low_recognition 905219,dislike_boss 904447,health 905960,health 904267,dislike_boss 901218,bored 901625,dont_know 905359,dislike_boss 903764,low_recognition 903239,no_advancement 905587,bored 905104,dislike_boss 904720,health 901533,salary 904021,dislike_boss 904647,low_recognition 902837,low_recognition 902525,dislike_boss 903388,low_recognition 901400,no_advancement 904278,low_recognition 905779,salary 904928,dislike_boss 901033,no_advancement 904727,health 901115,bored 903045,health 904287,dislike_boss 903750,bored 901876,bored 903373,salary 901346,no_advancement 904983,dislike_boss 902301,no_advancement 904754,no_advancement 905177,salary 901570,salary 901854,no_advancement 904579,bored 905687,dislike_boss 905991,no_advancement 905994,dislike_boss 902881,salary 903205,no_advancement 901067,dislike_boss 905617,bored 901822,bored 901172,bored 901390,salary 903349,bored 901504,salary 905474,no_advancement 904982,salary 903288,low_recognition 904443,low_recognition 904552,no_advancement 901934,dont_know 902315,no_advancement 904326,low_recognition 905815,bored 904935,unsafe_environment 903877,salary 903407,dislike_boss 903437,dislike_boss 901089,low_recognition 903835,dislike_boss 902622,no_advancement 902513,bored 905472,dislike_boss 903599,salary 903498,bored 902688,health 904509,no_advancement 905976,no_advancement 902953,low_recognition 904386,dislike_boss 905141,bored 905343,bored 902510,no_advancement 901772,low_recognition 904523,low_recognition 904374,no_advancement 904649,bored 903144,dont_know 901039,bored 901040,no_advancement 905238,dislike_boss 901112,salary 904889,low_recognition 905955,salary 903254,bored 904157,salary 901132,bored 903689,salary 905210,dislike_boss 902640,low_recognition 905526,no_advancement 901793,dislike_boss 905110,dislike_boss 905386,bored 905611,bored 902812,salary 904158,no_advancement 903704,salary 902829,dislike_boss 902358,bored 902580,low_recognition 903903,salary 903578,dislike_boss 901666,no_advancement 904434,no_advancement 905610,dislike_boss 901797,dont_know 903510,no_advancement 904651,salary 902777,dont_know 903888,no_advancement 902748,no_advancement 901737,low_recognition 903521,dislike_boss 905750,dislike_boss 905297,salary 903213,salary 902791,no_advancement 903755,salary 903055,low_recognition 901758,no_advancement 902559,dislike_boss 903193,salary 902257,health 904069,dislike_boss 905106,salary 903227,dislike_boss 903616,no_advancement 904919,no_advancement 901698,dont_know 904276,salary 901339,salary 903168,dislike_boss 905891,salary 904791,bored 904425,health 904669,low_recognition 904100,health 904813,dislike_boss 903559,low_recognition 904412,low_recognition 903234,no_advancement 904992,no_advancement 902697,no_advancement 902375,dislike_boss 903264,health 904844,dislike_boss 905017,low_recognition 903564,dont_know 904955,salary 902097,dont_know 903165,dislike_boss 903040,no_advancement 903933,no_advancement 903537,no_advancement 905052,salary 905858,no_advancement 905877,dislike_boss 901813,dislike_boss 901999,low_recognition 904681,dislike_boss 901663,salary 903538,no_advancement 904188,dislike_boss 903017,dislike_boss 901618,no_advancement 902143,salary 903181,no_advancement 902635,salary 902242,dislike_boss 903281,salary 903184,bored 905257,dislike_boss 905332,low_recognition 905977,salary 903662,unsafe_environment 903876,salary 902217,low_recognition 904560,low_recognition 903950,no_advancement 903128,bored 903519,no_advancement 905148,salary 905983,bored 902964,low_recognition 905521,salary 902741,unsafe_environment 902826,bored 901309,no_advancement 901615,no_advancement 902260,salary 902091,dislike_boss 904199,bored 902410,no_advancement 905085,unsafe_environment 903210,bored 905118,low_recognition 905888,low_recognition 901546,low_recognition 902241,no_advancement 901755,salary 905914,salary 903530,low_recognition 902817,salary 902781,low_recognition 902197,no_advancement 902162,low_recognition 905277,dislike_boss 902557,health 905546,dislike_boss 901239,low_recognition 902618,salary 905809,low_recognition 905389,salary 905862,salary 903111,bored 904308,bored 903299,salary 901908,bored 905167,low_recognition 902928,bored 901648,bored 903601,salary 901405,dislike_boss 903972,dislike_boss 901964,bored 901053,no_advancement 903963,unsafe_environment 901776,dislike_boss 903271,no_advancement 904256,no_advancement 905898,low_recognition 903594,no_advancement 904265,health 902213,no_advancement 901829,low_recognition 901568,dislike_boss 903603,low_recognition 901440,dislike_boss 902982,no_advancement 901006,no_advancement 904806,no_advancement 903221,salary 905161,low_recognition 903819,unsafe_environment 905187,low_recognition 905919,dislike_boss 901228,dislike_boss 903929,no_advancement 901050,salary 903358,health 903561,dislike_boss 903300,dislike_boss 904102,salary 905580,no_advancement 902868,salary 902739,dislike_boss 902361,no_advancement 901863,dislike_boss 903408,dislike_boss 905109,salary 902950,dislike_boss 904801,bored 903123,bored 901671,no_advancement 903765,low_recognition 905339,dislike_boss 903378,no_advancement 904837,salary 902995,salary 905468,no_advancement 901463,dislike_boss 905878,salary 902997,low_recognition 902208,no_advancement 903029,no_advancement 901334,no_advancement 904046,no_advancement 905071,dislike_boss 902918,no_advancement 905205,bored 902105,bored 902761,dislike_boss 905149,no_advancement 904817,low_recognition 903743,dislike_boss 904050,no_advancement 904332,salary 902024,dislike_boss 901043,no_advancement 902785,dislike_boss 902934,salary 903379,no_advancement 903043,salary 904803,no_advancement 905620,low_recognition 901703,low_recognition 904988,salary 904234,salary 902221,unsafe_environment 905775,low_recognition 904426,no_advancement 903508,no_advancement 902037,no_advancement 904383,salary 901331,dislike_boss 902935,dislike_boss 903050,no_advancement 905998,bored 903839,dislike_boss 903286,bored 905738,low_recognition 902438,salary 904878,salary 902190,dislike_boss 905363,low_recognition 905987,no_advancement 902864,dislike_boss 902009,dont_know 901881,health 901852,dislike_boss 903355,dont_know 901258,low_recognition 905604,bored 904323,no_advancement 902701,no_advancement 901696,low_recognition 905957,no_advancement 904914,no_advancement 904446,dislike_boss 903923,no_advancement 903075,dislike_boss 903836,dislike_boss 902153,no_advancement 902747,dislike_boss 905936,dont_know 901691,low_recognition 905450,no_advancement 905690,no_advancement 905951,no_advancement 903822,low_recognition 902034,bored 903886,dislike_boss 904660,no_advancement 902898,salary 905314,salary 904730,salary 902447,no_advancement 902456,bored 904342,no_advancement 902596,dislike_boss 904057,bored 901685,salary 902988,low_recognition 905534,bored 903788,salary 904325,bored 904441,low_recognition 903921,no_advancement 905739,dislike_boss 905733,salary 901220,no_advancement 902745,low_recognition 904244,no_advancement 905827,dislike_boss 901497,low_recognition 901557,low_recognition 904142,bored 902220,salary 904587,low_recognition 905552,dislike_boss 903961,no_advancement 904599,no_advancement 901948,no_advancement 904389,salary 904099,dislike_boss 904317,unsafe_environment 904944,no_advancement 902705,no_advancement 901681,no_advancement 904228,low_recognition 902805,salary 904038,low_recognition 904366,low_recognition 903448,bored 903038,unsafe_environment 904731,dislike_boss 903002,low_recognition 905199,dislike_boss 903463,no_advancement 903934,bored 905449,dislike_boss 904149,dislike_boss 903011,low_recognition 902212,dislike_boss 905400,health 905488,dislike_boss 904764,salary 902854,salary 901459,salary 902329,dislike_boss 904415,low_recognition 904378,dislike_boss 902838,dislike_boss 902452,low_recognition 904197,salary 904624,no_advancement 902609,salary 902235,no_advancement 901462,dislike_boss 901676,no_advancement 903562,no_advancement 903095,health 902437,low_recognition 901982,no_advancement 903787,bored 905746,low_recognition 902602,dislike_boss 901324,salary 901262,dislike_boss 904767,low_recognition 904952,low_recognition 902385,bored 901272,dislike_boss 905547,no_advancement 903381,salary 902751,salary 902856,low_recognition 905563,dislike_boss 904617,no_advancement 903185,dislike_boss 904433,dislike_boss 904031,no_advancement 901234,low_recognition 905303,salary 905452,bored 901466,no_advancement 905111,unsafe_environment 901035,dislike_boss 901989,no_advancement 905741,dislike_boss 904088,dislike_boss 902983,salary 901129,dislike_boss 901559,unsafe_environment 903027,no_advancement 903856,dislike_boss 904814,salary 902827,dislike_boss 905358,salary 902569,low_recognition 901214,low_recognition 904483,no_advancement 902078,no_advancement 903644,salary 903377,no_advancement 905854,dislike_boss 903305,low_recognition 903160,salary 905684,salary 902717,low_recognition 901525,no_advancement 904532,salary 904828,salary 901082,unsafe_environment 904778,bored 905122,no_advancement 902228,no_advancement 905311,bored 901699,salary 901760,bored 904413,salary 903418,dislike_boss 902185,no_advancement 905790,dislike_boss 905019,salary 905442,dislike_boss 902691,salary 901167,no_advancement 901232,low_recognition 904650,no_advancement 902731,bored 901614,dislike_boss 902367,low_recognition 901511,dislike_boss 901433,dislike_boss 903570,no_advancement 901966,dislike_boss 904380,bored 903808,low_recognition 902041,salary 901880,salary 901509,low_recognition 902287,bored 905972,salary 903335,low_recognition 902780,no_advancement 903327,dislike_boss 901563,salary 905505,no_advancement 903309,health 903566,health 905099,dislike_boss 901395,dislike_boss 901512,low_recognition 905398,salary 902388,low_recognition 905268,bored 905895,dislike_boss 902023,low_recognition 901897,dont_know 904749,dislike_boss 905777,salary 905512,no_advancement 903409,low_recognition 904872,dislike_boss 902919,low_recognition 905078,salary 904697,dislike_boss 902512,no_advancement 904055,salary 901140,low_recognition 901933,dislike_boss 904899,low_recognition 902130,health 903073,salary 903059,salary 905945,no_advancement 902599,unsafe_environment 903435,no_advancement 903436,bored 904118,no_advancement 903918,bored 902592,salary 903431,salary 903607,no_advancement 902273,salary 905197,low_recognition 904839,low_recognition 901901,no_advancement 903108,no_advancement 904613,dislike_boss 903257,health 902263,no_advancement 903485,salary 903651,bored 903747,low_recognition 901148,salary 902729,dislike_boss 904203,salary 901702,no_advancement 904969,salary 905869,dislike_boss 903864,salary 902906,bored 905909,bored 904728,dislike_boss 902764,unsafe_environment 902649,bored 901268,health 905200,salary 902936,low_recognition 904796,low_recognition 903163,unsafe_environment 903947,low_recognition 903494,salary 904695,salary 902583,dislike_boss 902115,low_recognition 901572,dislike_boss 903579,no_advancement 902730,salary 905984,dislike_boss 903685,low_recognition 901716,no_advancement 902369,bored 904851,no_advancement 901976,no_advancement 902426,dislike_boss 903992,dislike_boss 903663,no_advancement 905175,no_advancement 901037,bored 901219,dislike_boss 904355,low_recognition 902566,no_advancement 903920,salary 902967,bored 901169,low_recognition 903304,dislike_boss 905628,dislike_boss 901333,dislike_boss 902033,low_recognition 902655,dislike_boss 902423,bored 904834,bored 905529,dislike_boss 904030,health 903260,salary 903796,bored 903777,salary 904788,low_recognition 902094,salary 905847,salary 901890,salary 904051,bored 903428,low_recognition 904488,salary 902680,won_lottery 902314,salary 903024,health 901712,dislike_boss 904419,health 905095,salary 901021,bored 902676,low_recognition 904289,bored 903150,salary 902173,bored 905293,low_recognition 904699,dislike_boss 904219,no_advancement 901850,no_advancement 905965,salary 902830,low_recognition 902567,no_advancement 903147,salary 902696,bored 905124,no_advancement 905447,low_recognition 903052,dislike_boss 903237,salary 904445,no_advancement 904172,low_recognition 903298,bored 905985,dislike_boss 905356,health 905481,low_recognition 903290,low_recognition 901740,salary 903984,dislike_boss 901745,low_recognition 901246,salary 904663,no_advancement 903057,dislike_boss 904430,no_advancement 905723,no_advancement 902450,dislike_boss 904168,unsafe_environment 904460,no_advancement 901715,no_advancement 904725,dislike_boss 903169,low_recognition 904780,no_advancement 905506,dislike_boss 902401,dislike_boss 902788,low_recognition 903369,salary 905999,salary 903098,low_recognition 905852,salary 904297,bored 901475,no_advancement 905510,dislike_boss 902003,dislike_boss 903400,low_recognition 901198,salary 901888,salary 902993,salary 903394,no_advancement 905671,low_recognition 903010,salary 904965,low_recognition 901225,no_advancement 904183,health 901096,low_recognition 901447,salary 902981,bored 901841,no_advancement 903362,no_advancement 902578,unsafe_environment 902077,dislike_boss 905070,low_recognition 901662,no_advancement 904238,low_recognition 902064,dislike_boss 904800,low_recognition 902458,low_recognition 905407,no_advancement 903783,no_advancement 903041,dislike_boss 905192,bored 901378,salary 905264,no_advancement 902296,no_advancement 902794,salary 903529,no_advancement 905032,dislike_boss 905880,salary 903909,no_advancement 903367,low_recognition 901523,salary 904153,dont_know 902232,salary 905036,dislike_boss 905174,dislike_boss 902800,no_advancement 903837,salary 904126,no_advancement 901162,no_advancement 903444,no_advancement 902025,dislike_boss 903376,salary 901971,no_advancement 904542,dislike_boss 904608,low_recognition 905799,dislike_boss 904164,dislike_boss 903323,low_recognition 902576,no_advancement 904645,dislike_boss 901313,dislike_boss 902644,dislike_boss 904574,dislike_boss 902243,salary 901376,salary 901287,bored 902772,no_advancement 902844,low_recognition 901397,no_advancement 903136,dislike_boss 901045,no_advancement 902820,dislike_boss 905996,dislike_boss 901725,no_advancement 901135,bored 901531,unsafe_environment 903535,no_advancement 903891,no_advancement 901569,dislike_boss 905090,no_advancement 904173,dislike_boss 905026,unsafe_environment 902022,salary 905591,salary 905461,low_recognition 901159,dont_know 904953,bored 901992,no_advancement 901731,salary 902722,salary 901380,health 901363,bored 905249,salary 904133,low_recognition 901771,low_recognition 902405,health 904352,no_advancement 903843,dislike_boss 901282,no_advancement 901697,dislike_boss 901456,salary 902274,no_advancement 901632,bored 904942,salary 901332,no_advancement 904816,salary 901243,salary 904097,no_advancement 901598,dislike_boss 901970,salary 904578,bored 903994,dislike_boss 901595,low_recognition 904027,salary 904655,dislike_boss 903265,salary 901391,low_recognition 901191,dislike_boss 905989,no_advancement 902128,salary 903187,salary 904808,low_recognition 902725,no_advancement 902157,bored 901727,bored 903838,dislike_boss 901669,low_recognition 902897,salary 902733,salary 903470,dont_know 902098,unsafe_environment 904859,dislike_boss 903012,dislike_boss 902852,salary 905454,no_advancement 904529,dislike_boss 902441,dislike_boss 904431,no_advancement 902843,dislike_boss 903101,bored 905098,no_advancement 905115,salary 903637,no_advancement 901905,no_advancement 904875,dislike_boss 905006,salary 905227,low_recognition 904022,no_advancement 904202,no_advancement 903212,no_advancement 901450,bored 905228,no_advancement 904668,low_recognition 904442,bored 902075,dislike_boss 905637,dislike_boss 904679,bored 903789,no_advancement 902487,no_advancement 902834,no_advancement 904639,bored 903648,low_recognition 902952,no_advancement 904438,dislike_boss 903396,salary 903857,dislike_boss 903772,no_advancement 904033,dislike_boss 901455,low_recognition 904502,dislike_boss 902667,no_advancement 905236,low_recognition 904218,salary 905982,low_recognition 905568,no_advancement 902021,low_recognition 904103,no_advancement 904087,salary 902796,bored 905769,no_advancement 901667,no_advancement 903366,unsafe_environment 902165,no_advancement 901795,salary 904951,no_advancement 903803,dislike_boss 903636,low_recognition 902433,dislike_boss 902494,low_recognition 905532,no_advancement 901600,dislike_boss 903622,low_recognition 903911,low_recognition 905990,no_advancement 904912,salary 905211,no_advancement 905803,no_advancement 902129,salary 904251,bored 903988,no_advancement 904346,salary 904159,salary 905308,low_recognition 902348,salary 903471,health 903785,low_recognition 905448,dislike_boss 903829,low_recognition 902658,no_advancement 902579,low_recognition 903145,salary 903334,salary 905031,bored 901240,bored 902359,dislike_boss 903490,no_advancement 905523,no_advancement 901870,no_advancement 902821,salary 902163,dislike_boss 901375,unsafe_environment 901263,no_advancement 903707,no_advancement 905963,no_advancement 903672,no_advancement 904376,salary 903584,dont_know 902662,low_recognition 902443,bored 902383,dislike_boss 901518,low_recognition 902152,health 901766,low_recognition 901820,low_recognition 904043,no_advancement 901873,no_advancement 903322,dislike_boss 903742,salary 901825,low_recognition 904169,salary 905992,dislike_boss 905522,salary 904074,no_advancement 901847,bored 901062,no_advancement 902244,no_advancement 901275,low_recognition 903476,bored 903900,dislike_boss 903503,bored 901049,no_advancement 905785,low_recognition 903618,dislike_boss 902973,dislike_boss 904998,salary 905632,salary 901739,dislike_boss 901325,salary 902531,dislike_boss 904751,no_advancement 902954,low_recognition 901924,no_advancement 901079,salary 901947,bored 901777,salary 902224,dislike_boss 905831,salary 901528,no_advancement 901337,dislike_boss 904437,low_recognition 903412,no_advancement 902132,dislike_boss 901361,salary 903966,no_advancement 901111,dislike_boss 905612,low_recognition 902336,salary 903643,dislike_boss 901125,salary 904209,no_advancement 901213,bored 903879,low_recognition 902175,dislike_boss 903567,dislike_boss 903986,low_recognition ================================================ FILE: How to make a pride flag/README.md ================================================ # How to make a pride flag with R []() Hi everybody! In this folder, you'll find materials supporting my vid, **How to make a pride flag with R**, which you can find at . ================================================ FILE: How to make a pride flag/script - pride flag.R ================================================ library(tidyverse) colors <- c("#770088", "#004CFF", "#028121", "#FFEE00", "#FF8D00", "#E50000") # Or just use "red", "orange", etc. cats <- letters[1:6] cats df <- tibble(cats) df ggplot(df, aes(y = cats, fill = cats)) + geom_bar(show.legend = FALSE, width = 1) + scale_fill_manual(values = colors) + theme_void() # Can you make a progress flag? # Hint: geom_polygon ================================================ FILE: How to purrr/README.md ================================================ # How to purrr []() Hi everybody! In this folder, you'll find materials supporting my vid, **How to purrr**, which you can find at . ================================================ FILE: How to purrr/script - purrr.R ================================================ library(tidyverse) map(1:5, sqrt) map_dbl(1:5, sqrt) sqrt(1:5) silly_list <- list("foo", 1:5, faithful, TRUE) class(silly_list) map_chr(silly_list, class) faithful_chr <- faithful %>% map_df(as.character) glimpse(faithful_chr) faithful_chr <- faithful %>% map_chr(as.character) # error min_to_sec <- function(x){ x * 60 } faithful_sec <- faithful %>% map_df(min_to_sec) glimpse(faithful_sec) faithful_sec <- faithful %>% map_df(function(x) x * 60) faithful_sec <- faithful %>% map_df(\(x) x * 60) # additional arguments means <- c(1, 10, 20, 50) map(means, rnorm, n = 5) map(means, rnorm, nm = 5) # error map(means, \(m) rnorm(5, m)) # multiple iterations sds <- c(.1, 1, 3, 5) map2(means, sds, \(m, s) rnorm(5, m, s)) # iterate over 2 vectors # If you want all combinations, use ?expand_grid expand_grid(means, sds) nums <- 1:4 pmap(list(nums, means, sds), rnorm) ================================================ FILE: How to put a project onto GitHub/README.md ================================================ # How to put a project onto GitHub []() Hi everybody! In this folder, you'll find materials supporting my vid, **How to put a project onto GitHub**, which you can find at . ================================================ FILE: How to put a project onto GitHub/github setup.R ================================================ # GitHub setup # First, sign up for an account at www.github.com library(usethis) # Connect RStudio to your GitHub create_github_token() gitcreds::gitcreds_set() # Put a project onto GitHub use_github() # Create a readme use_readme_md() ================================================ FILE: How to show a ggplot to AI/README.md ================================================ # How to show a ggplot to an AI assistant []() Hi everybody! In this folder, you'll find materials supporting my vid, **How to show a ggplot to an AI assistant**, which you can find at . ================================================ FILE: How to show a ggplot to AI/script - ggplot with AI.R ================================================ library(tidyverse) library(ellmer) glimpse(msleep) ggplot(msleep, aes(x = bodywt, y = brainwt)) + geom_point() ?chat_anthropic claude <- chat_anthropic() ?content_image_plot claude$chat("Provide suggestions for improving this plot based on dataziv best practice", content_image_plot()) claude$chat("write r code to implement suggestions 1, 2, 4, and 6. Label the most extreme outlier only as African Elephant. The data set is msleep.") ggplot(msleep, aes(x = bodywt, y = brainwt)) + # Use log10 scales for both axes scale_x_log10(labels = scales::comma) + scale_y_log10(labels = scales::comma) + # Add points geom_point(alpha = 0.7) + # Label the African Elephant point only geom_text(data = msleep %>% filter(name == "African elephant"), aes(label = name), hjust = -0.2, vjust = 0.5, size = 3.5) + # Add title and proper axis labels labs( title = "Relationship Between Brain Weight and Body Weight in Mammals", x = "Body Weight (kg)", y = "Brain Weight (kg)", caption = "Data source: msleep dataset from ggplot2 package" ) + # Use a clean theme theme_minimal() + # Additional theme customization theme( plot.title = element_text(face = "bold", size = 14), axis.title = element_text(size = 12), plot.caption = element_text(hjust = 0, face = "italic") ) live_browser(claude) # Load libraries library(ggplot2) library(dplyr) # Create improved scatter plot ggplot(msleep, aes(x = bodywt, y = brainwt)) + # Use log scales scale_x_log10(labels = scales::comma) + scale_y_log10(labels = scales::comma) + # Add points geom_point(alpha = 0.7) + # Label African Elephant only geom_text(data = msleep %>% filter(name == "African elephant"), aes(label = name), hjust = -0.2, vjust = 0.5, size = 3.5) + # Add title and axis labels labs( title = "Relationship Between Brain Weight and Body Weight in Mammals", x = "Body Weight (kg)", y = "Brain Weight (kg)", caption = "Data source: msleep dataset" ) + # Apply theme theme_minimal() + # Customize appearance theme( plot.title = element_text(face = "bold", size = 14), axis.title = element_text(size = 12), plot.caption = element_text(hjust = 0, face = "italic") ) claude$get_cost() ================================================ FILE: Hypothesis testing in R/README.md ================================================ # Hypothesis testing in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Hypothesis testing in R**, which you can find at . ================================================ FILE: Hypothesis testing in R/Script - hypothesis testing in R.R ================================================ library(tidyverse) ?airquality View(airquality) qplot(airquality$Wind, geom = "histogram") t.test(airquality$Wind, mu = 9) qplot(airquality$Solar.R, geom = "histogram") t.test(airquality$Solar.R, mu = 175, alternative = "greater") ================================================ FILE: If-else statements in R/README.md ================================================ # If-else statements in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **If-else statements in R**, which you can find at . ================================================ FILE: If-else statements in R/Script - ifelse.R ================================================ # if-else statements in R library(tidyverse) # the basics -------------------------------------------------------------- my_word <- "hello there!" if (nchar(my_word) <= 5) { print("It's a short string") } else if (nchar(my_word) <= 8){ print("It's a mid-length string") } else { print("It's a long string") } # a handy shortcut -------------------------------------------------------- x <- 4 y <- if (x < 5) 0 else 10 ?ifelse y <- ifelse(x < 5, 0, 10) y # practical example ------------------------------------------------------- # import the data (it's on my GitHub) plant_updates <- read_csv("If-else statements in R/plant_updates.csv") View(plant_updates) plants_new <- plant_updates %>% mutate(name_best = ifelse(!is.na(name_2017), name_2017, scientific_name), c_best = ifelse(!is.na(c_2017), c_2017, c)) View(plants_new) skimr::skim(plants_new) ================================================ FILE: If-else statements in R/plant_updates.csv ================================================ scientific_name,c,name_2017,c_2017 Acanthopanax sieboldianus,0,Eleutherococcus sieboldianus,0 Actaea rubra ssp. arguta,10,Actaea rubra,10 Actaea rubra ssp. rubra,10,Actaea rubra,10 Agalinis paupercula var. borealis,9,Agalinis paupercula,9 Agalinis paupercula var. paupercula,9,Agalinis paupercula,9 Agastache scrophulariaefolia,5,Agastache scrophulariifolia,5 Alcea rosea,0,Althaea rosea,0 Allium ?stulosum,0,Allium fistulosum,0 Allium canadense var. canadense,3,Allium canadense,3 Allium canadense var. lavandulare,9,Allium canadense var. lavendulare,9 Allium mutabile,0,Allium canadense var. lavendulare,9 Alnus incana,8,Alnus rugosa,8 Ampelamus albidus,0,Ampelamus laevis,0 Amphicarpaea bracteata var. bracteata,5,Amphicarpaea bracteata,5 Amsinckia spectabilis,0,Amsinckia menziesii,0 Anchusa of?cinalis,0,Anchusa officinalis,0 Andromeda polifolia var. latifolia,10,Andromeda glaucophylla,10 Anemone patens var. multi?da,10,Pulsatilla patens subsp. multifida,10 Anemone quinquefolia var. bifolia,7,Anemone quinquefolia,7 Anemone quinquefolia var. quinquefolia,7,Anemone quinquefolia,7 Antennaria howellii,3,NA,3 Antennaria parlinii ssp. fallax,3,Antennaria parlinii subsp. fallax,3 Antennaria parlinii ssp. parlinii,3,Antennaria parlinii,3 Anthoxanthum hirtum,10,Hierochloe hirta,10 Anticlea elegans,10,Anticlea elegans var. glauca,10 Apocynum androsaemifolium var. androsaemifolium,5,Apocynum androsaemifolium,5 Apocynum androsaemifolium var. incanum,5,Apocynum androsaemifolium,5 Apocynum cannabinum,2,Apocynum cannabinum var. glaberrimum,2 Apocynum x ?oribundum,4,Apocynum x floribundum,4 Aralia chinensis,0,Aralia elata,0 Arctostaphylos uva-ursi ssp. coactilis,10,Arctostaphylos uva-ursi var. coactilis,10 Argemone albi?ora,0,Argemone albiflora,0 Aristida intermedia,5,Aristida necopina,3 Aristida longespica,1,Aristida longispica,1 Aristida longespica var. geniculata,1,Aristida necopina,3 Aristida longespica var. longespica,1,Aristida longispica,1 Artemisia campestris ssp. caudata,5,Artemisia campestris subsp. caudata,5 Artemisia ludoviciana var. gnaphalodes,0,Artemisia ludoviciana,0 Artemisia ludoviciana var. ludoviciana,0,Artemisia ludoviciana,0 Artemisia vulgaris var. glabra,0,Artemisia vulgaris,0 Artemisia vulgaris var. latiloba,0,Artemisia ludoviciana,0 Artemisia vulgaris var. vulgaris,0,Artemisia vulgaris,0 Aruncus dioicus var. pubescens,10,Aruncus dioicus,10 Asclepias longifolia,10,Asclepias hirtella,10 Asclepias tuberosa ssp. interior,8,Asclepias tuberosa,8 Asclepias viridi?ora,10,Asclepias viridiflora,10 Athyrium filix-femina ssp. angustum,8,Athyrium filix-femina,8 Atriplex glabriuscula,0,Atriplex patula,0 Aureolaria ?ava var. macrantha,9,Aureolaria flava,10 Aureolaria grandi?ora var. pulchra,10,Aureolaria grandiflora var. pulchra,10 Aureolaria pedicularia var. ambigens,7,Aureolaria pedicularia,7 Azolla cristata,5,Azolla caroliniana,5 Baptisia alba var. macrophylla,8,Baptisia lactea,8 Baptisia bracteata,10,Baptisia leucophaea,10 Betula pumila var. glabra,10,Betula pumila,10 Betula pumila var. glandulifera,10,Betula pumila,10 Betula pumila var. pumila,10,Betula pumila,10 Bidens beckii,10,Megalodonta beckii,10 Bidens trichosperma,9,Bidens trichosperma,8 Bidens tripartita,3,NA,NA Boechera shortii,6,Boechera dentata,8 Boltonia asteroides var. asteroides,8,Boltonia asteroides,8 Boltonia asteroides var. latisquama,8,Boltonia asteroides,8 Boltonia asteroides var. recognita,8,Boltonia asteroides,8 Borago of?cinalis,0,Borago officinalis,0 Bothriochloa laguroides,0,Bothriochloa laguroides subsp. torreyana,0 Bromus arvensis,0,Bromus japonicus,0 Bromus hordeaceus ssp. hordeaceus,0,Bromus hordaceus subsp. hordaceus,0 Bromus hordeaceus ssp. pseudothominei,0,Bromus hordaceus subsp. pseudothominei,0 Bromus pubescens,5,Bromus pubescens,10 Cakile edentula ssp. edentula var. edentula,0,Cakile edentula,0 Cakile edentula ssp. edentula var. lacustris,7,Cakile lacustris,7 Calamagrostis stricta,8,Calamagrostis stricta subsp. inexpansa,8 Calamovilfa longifolia,8,Calamovilfa longifolia var. magna,8 Callirhoe digitata,0,Callirhoe alcaeoides,0 Calystegia hederacea,0,Calystegia pubescens,0 Calystegia sepium ssp. americana,1,Calystegia sepium,1 Calystegia sepium ssp. angulata,1,Calystegia sepium subsp. angulata,1 Calystegia sepium ssp. sepium,1,Calystegia sepium,1 Calystegia silvatica ssp. fraterniflorus,1,Calystegia silvatica subsp. fraterniflora,1 Cardamine concatenata,5,Dentaria laciniata,5 Cardamine diphylla,10,Dentaria diphylla,10 Cardaria pubescens var. elongata,0,Lepidium appelianum,0 Carex abdita,7,Carex umbellata,7 Carex atlantica ssp. atlantica,10,Carex atlantica,10 Carex atlantica ssp. capillacea,10,Carex atlantica subsp. capillacea,10 Carex canescens ssp. canescens,10,Carex canescens,10 Carex canescens ssp. disjuncta,10,Carex canescens,10 Carex crinita var. brevicrinis,7,Carex crinita,7 Carex crinita var. crinita,7,Carex crinita,7 Carex debilis var. debilis,10,Carex debilis,10 Carex echinodes,10,Carex echinodes,5 Carex emmonsii,9,Carex albicans var. emmonsii,5 Carex heliophila,5,Carex inops subsp. heliophila,10 Carex laxi?ora,8,Carex laxiflora,8 Carex nigromarginata,6,Carex albicans var. emmonsii,5 Carex vaginata,0,Carex tetanica,7 Carex x subimpressa,4,NA,NA Carpinus caroliniana ssp. virginiana,8,Carpinus caroliniana subsp. virginiana,8 Castilleja sessili?ora,10,Castilleja sessiliflora,10 Ceanothus americanus,6,Ceanothus americanus,8 Ceanothus americanus var. americanus,6,Ceanothus americanus,8 Ceanothus americanus var. pitcheri,6,Ceanothus americanus,8 Centaurea stoebe ssp. micranthos,0,Centaurea stoebe subsp. micranthos,0 Chaenorrhinum minus,0,Chaenorhinum minus,0 Chenopodium leptophyllum,5,Chenopodium pallescens,10 Chimaphila umbellata ssp. cisatlantica,10,Chimaphila umbellata subsp. cisatlantica,10 Chrysopsis camporum,10,Heterotheca camporum,10 Chrysopsis camporum var. glandulissima,0,Heterotheca camporum var. glandulissima,0 Chrysopsis villosa,8,Heterotheca villosa,8 Chrysopsis villosa var. foliosa,0,Heterotheca villosa var. foliosa,0 Cirsium altissimum,6,Cirsium altissimum,8 Cirsium pumilum var. hillii,10,Cirsium hillii,10 Clematis terni?ora,0,Clematis terniflora,0 Cleome serrulata,0,Peritoma serrulata,0 Clinopodium arkansanum,10,Calamintha arkansana,10 Commelina erecta,10,Commelina erecta var. deamiana,10 Corallorhiza trifida,10,Corallorhiza trifida var. verna,10 Coreopsis grandi?ora,0,Coreopsis grandiflora,0 Coreopsis grandiflora var. grandiflora,0,Coreopsis grandiflora,0 Corispermum welshii,2,NA,NA Cornus alba,5,Cornus sericea,5 Corydalis sempervirens,10,Capnoides sempervirens,10 Cotoneaster acutifolia,0,Cotoneaster lucidus,0 Cotoneaster multiflora,0,Cotoneaster magnificus,0 Crataegus ?abellata,5,Crataegus macrosperma,5 Crataegus intricata,5,Crataegus chrysocarpa,4 Crataegus pedicellata,5,Crataegus coccinea,5 Crataegus punctata var. aurea,4,Crataegus punctata,4 Crataegus punctata var. punctata,4,Crataegus punctata,4 Cuscuta compacta,10,Cuscuta gronovii,5 Cuscuta gronovii var. gronovii,5,Cuscuta gronovii,5 Cuscuta gronovii var. latifolia,4,Cuscuta gronovii,5 Cynoglossum of?cinale,0,Cynoglossum officinale,0 Cynoglossum virginianum,10,Cynoglossum boreale,10 Cyperus esculentus,0,Cyperus esculentus var. leptostachyus,0 Cyperus flavescens,9,Cyperus flavescens,10 Cyperus houghtonii,2,Cyperus houghtonii,4 Cyperus lupulinus,5,Cyperus lupulinus,4 Cypripedium parviflorum,10,NA,10 Cypripedium parviflorum var. parviflorum,10,Cypripedium parviflorum var. pubescens,10 Cypripedium x andrewsii var. andrewsii,10,Cypripedium x andrewsii,10 Cypripedium x andrewsii var. favillianum,10,Cypripedium x andrewsii,10 Cyrtorhyncha cymbalaria,1,Halerpestes cymbalaria,1 Cystopteris bulbifera,8,Cystopteris bulbifera,10 Datura stramonium var. stramonium,0,Datura stramonium,0 Datura stramonium var. tatula,0,Datura stramonium,0 Deschampsia ?exuosa,10,Avenella flexuousa,0 Deschampsia caespitosa,10,Deschampsia cespitosa,10 Descurainia pinnata ssp. brachycarpa,0,Descurainia pinnata var. brachycarpa,0 Desmodium cuspidatum var. cuspidatum,10,Desmodium cuspidatum,10 Desmodium glutinosum,5,Hylodesmum glutinosum,7 Desmodium marilandicum,10,Desmodium marilandicum,9 Desmodium nudi?orum,9,Hylodesmum nudiflorum,10 Diarrhena americana,10,Diarrhena obovata,10 Dichanthelium acuminatum,4,NA,NA Dichanthelium oligosanthes,4,Dichanthelium oligosanthes,9 Dichanthelium ovale var. addisonii,10,Dichanthelium commonsianum,10 Dichanthelium portoricense,8,Dichanthelium columbianum,8 Dichanthelium sphaerocarpon var. isophyllum,8,Dichanthelium polyanthes,10 Dichanthelium sphaerocarpon var. sphaerocarpon,8,Dichanthelium sphaerocarpon,7 Digitaria ?liformis,10,Digitaria filiformis,10 Diphasiastrum complanatum,4,Diphasiastrum digitatum,4 Diplachne fusca,0,Leptochloa fascicularis,0 Diplazium pycnocarpon,10,Homalosorus pycnocarpos,10 Distichlis spicata var. stricta,0,Distichlis stricta,0 Doellingeria umbellata var. pubens,8,Doellingeria umbellata,8 Doellingeria umbellata var. umbellata,8,Doellingeria umbellata,8 Draba reptans var. reptans,4,Draba reptans,4 Draba reptans var. stellifera,4,Draba reptans,4 Draba verna,0,Erophila verna,0 Dryopteris ?lix-mas,10,Dryopteris filix-mas,10 Echinochloa colona,0,Echinochloa colonum,0 Echinodorus berteroi,4,Echinodorus berteroi var. lanceolatus,4 Eleocharis palustris,1,Eleocharis palustris,7 Eleocharis tenuis,8,Eleocharis elliptica,10 Elyhordium x macounii,0,Elyhordium macounii,0 Elyhordium x montanense,0,Elyhordium montanense,0 Elymus curvatus,4,Elmyus submuticus,4 Elymus hystrix,5,Hystrix patula,5 Elymus hystrix var. bigeloviana,5,Hystrix patula,5 Elymus hystrix var. hystrix,5,Hystrix patula,5 Elymus lanceolatus,0,Elytrigia dasystachya,0 Elymus lanceolatus ssp. psammophilus,0,Elytrigia dasystachya subsp. psammophila,0 Elymus repens,0,Elytrigia repens,0 Elymus trachycaulus,8,Roegneria trachycaula,8 Elymus trachycaulus ssp. subsecundus,8,Roegneria subsecunda,8 Elytrigia elongata,0,Thinopyrum ponticum,0 Eragrostis mexicana,0,Eragrostis pectinacea,0 Eragrostis reptans,0,Eragrostis hypnoides,5 Eragrostis trichodes var. pilifera,0,Eragrostis trichodes,0 Eragrostis trichodes var. trichodes,0,Eragrostis trichodes,0 Erianthus ravennae,0,Saccharum ravennae,0 Erigeron canadensis,0,Conyza canadensis,0 Eriophorum vaginatum var. spissum,10,Eriophorum vaginatum,10 Erysimum hieracifolium,0,Erysimum hieraciifolium,0 Eschscholtzia californica,0,Eschscholzia californica,0 Euonymus hederaceus,0,Euonymus fortunei,0 Euphorbia esula,0,Euphorbia virgata,0 Euphorbia heterophylla,0,Euphorbia cyathophora,0 Festuca ?liformis,0,Festuca filiformis,0 Festuca ovina,0,Festuca trachyphylla,0 Festuca saximontana,6,Festuca saximontana,7 Ficaria verna ssp. fragilis,0,Ficaria verna subsp. fertilis,0 Fragaria vesca ssp. americana,8,Fragaria vesca subsp. americana,8 Froelichia ?oridana,0,Froelichia floridana,0 Fumaria of?cinalis,0,Fumaria officinalis,0 Galium circaezans,5,NA,NA Galium mollugo,0,Galium album,0 Galium pedemontanum,0,Cruciata pedemontana,0 Gaura ?lipes,0,Stenosiphon linifolius,0 Gaura biennis,2,Gaura biennis,0 Gentiana andrewsii var. andrewsii,9,Gentiana andrewsii,9 Gentiana septem?da,0,Gentiana septemfida,0 Gentianella quinquefolia ssp. occidentalis,8,Gentiana quinqufolia subsp. occidentalis,8 Geum laciniatum var. laciniatum,3,Geum laciniatum,3 Geum laciniatum var. trichocarpum,3,Geum laciniatum,3 Gymnocladus dioicus,8,Gymnocladus dioicus,5 Helanthium tenellum,10,Helanthium parvulum,10 Helianthemum bicknellii,8,Crocanthemum bicknellii,8 Helianthemum canadense,7,Crocanthemum canadense,7 Helianthus hirsutus var. hirsutus,5,Helianthus hirsutus,7 Helianthus hirsutus var. trachyphyllus,5,Helianthus hirsutus,7 Helianthus maximilianii,0,Helianthus maximiliani,0 Helianthus pauci?orus,9,Helianthus pauciflorus,9 Helianthus subrhomboideus,9,Helianthus pauciflorus,9 Helianthus x laeti?orus,5,Helianthus x laetiflorus,5 Heliopsis helianthoides var. helianthoides,7,Heliopsis helianthoides,7 Heliopsis helianthoides var. scabra,7,Heliopsis helianthoides,7 Hemerocallis lilio-asphodelus,0,Hemerocallis lilioasphodelus,0 Heserostipa comata,0,Hesperostipa comata,0 Heserostipa spartea,8,Hesperostipa spartea,8 Hibiscus moscheutos,7,Hibiscus palustris,7 Hieracium scabrum var. intonsum,7,Hieracium scabrum,7 Hieracium scabrum var. scabrum,7,Hieracium scabrum,7 Hordeum marinum,0,Hordeum marinum subsp. gussoneanum,0 Hordeum vulgare var. trifurcatum,0,Hordeum vulgare,0 Hordeum vulgare var. vulgare,0,Hordeum vulgare,0 Humulus lupulus,3,Humulus lupulus var. pubescens,3 Hylotelephium x erythrostictum,0,Hylotelephium erythrostictum,0 Hypericum fraseri,8,Triadenum fraseri,8 Hypericum virginicum,10,Triadenum virginicum,10 Impatiens baifourii,0,Impatiens balfourii,0 Impatiens capensis,3,Impatiens capensis,4 Ionactis linariifolius,10,Ionactis linariifolia,10 Ipomoea pandurata,5,Ipomoea pandurata,4 Iris ?avescens,0,Iris flavescens,0 Iris x germanica,0,Iris germanica,0 Juncus alpinoarticulatus ssp. americanus,8,Juncus alpinoarticulatus,8 Juncus balticus ssp. littoralis,2,Juncus balticus,2 Juncus effusus ssp. solutus,5,Juncus effusus,5 Juniperus communis var. communis,8,Juniperis communis,8 Juniperus communis var. depressa,8,Juniperis communis,8 Kallstroemia parvi?ora,0,Kallstroemia parviflora,0 Kochia scoparia,0,Bassia scoparia,0 Lamium galeobdolon,0,Lamiastrum galeobdolon,0 Lathyrus japonicus var. maritimus,10,Lathyrus japonicus var. glaber,10 Lathyrus palustris,7,Lathyrus palustris,8 Lechea pulchella,7,Lechea pulchella,8 Leptoloma cognatum,1,Leptoloma cognata,1 Lespedeza intermedia,8,Lespedeza violacea,10 Liatris aspera var. aspera,8,Liatris aspera,8 Linaria genistifolia ssp. dalmatica,0,Linaria dalmatica,0 Lindernia dubia var. anagallidea,4,Lindernia anagallidea,4 Lindernia dubia var. dubia,4,Lindernia dubia,4 Linnaea borealis ssp. longiflora,10,Linnaea borealis subsp. longiflora,10 Liparis lilifolia,4,Liparis liliifolia,4 Lithospermum of?cinale,0,Lithospermum officinale,0 Lobelia spicata var. hirtella,4,Lobelia spicata,4 Lobelia spicata var. spicata,4,Lobelia spicata,4 Lolium perenne ssp. multiflorum,0,Lolium multiflorum,0 Lolium perenne ssp. perenne,0,Lolium perenne,0 Lonicera x minuti?ora,0,Lonicera x minutiflora,0 Lotus unifoliolatus,0,Acmispon americanus,0 Ludwigia palustris,3,Ludwigia palustris var. americana,3 Ludwigia peploides ssp. glabrescens,0,Jussiaea repens glabrescens,0 Ludwigia sphaerocarpa,10,Ludwigia sphaerocarpa var. deamii,10 Lythrum hyssopifolium,0,Lythrum hyssopifolia,0 Mahonia repens,0,Mahonia aquifolium,0 Maianthemum canadense,7,Maianthemum canadense var. interius,7 Maianthemum racemosum,5,Smilacina racemosa,5 Maianthemum stellatum,5,Smilacina stellata,5 Maianthemum trifolium,10,Smilacina trifolia,10 Malcolmia africana,0,Malcolma africana,0 Malus toringa,0,Malus toringo,0 Malus x soulardii,0,Malus ioensis,4 Malva rotundifolia,0,Malva neglecta,0 Medicago sativa ssp. falcata,0,Medicago falcata,0 Medicago sativa ssp. sativa,0,Medicago sativa,0 Melampyrum lineare var. latifolium,10,Melampyrum lineare,10 Melica mutica,10,NA,NA Mentha arvensis,5,Mentha canadensis,5 Mentha x citrata,0,Mentha aquatica var. citrata,0 Mimulus glabratus,10,Mimulus glabratus var. jamesii,10 Miscanthus sacchari?orus,0,Miscanthus sacchariflorus,0 Miscanthus sinensis,0,NA,0 Monarda fistulosa ssp. fistulosa,4,Monarda fistulosa,4 Monarda fistulosa ssp. fistulosa var. mollis,4,Monarda fistulosa,4 Monotropa hypopithys,10,Hypopitys monotropa,10 Muhlenbergia glabri?oris,10,Muhlenbergia glabrifloris,10 Muhlenbergia tenui?ora,10,Muhlenbergia tenuiflora,10 Muscari racemosum,0,Muscari neglectum,0 Nabalus albus,5,Prenanthes alba,5 Nabalus altissimus,7,Prenanthes altissima,7 Nabalus asperus,10,Prenanthes aspera,10 Nabalus crepidineus,9,Prenanthes crepinidea,9 Nabalus racemosus,10,Prenanthes racemosa,10 Najas guadalupensis ssp. guadalupensis,2,Najas guadalupensis,2 Najas guadalupensis ssp. olivacea,2,Najas guadalupensis,2 Narcissus pseudo-narcissus,0,Narcissus pseudonarcissus,0 Nicotiana longi?ora,0,Nicotiana longiflora,0 Nymphaea odorata,5,NA,NA Nymphaea odorata ssp. odorata,5,Nymphaea odorata,7 Nymphaea odorata ssp. tuberosa,5,Nymphaea odorata subsp. tuberosa,5 Oenothera oakesiana,0,Oenothera oakesiana,2 Opuntia humifusa,5,Opuntia cespitosa,4 Oryzopsis pungens,10,Piptatherum pungens,10 Oryzopsis racemosa,10,Piptatherum racemosum,10 Osmunda cinnamomeum,8,Osmundastrum cinnamomeum,8 Panicum dichotomiflorum ssp. puritanorum,2,Panicum dichotomiflorum subsp. puritanorum,10 Paspalum repens,10,Paspalum fluitans,10 Paspalum setaceum,3,NA,3 Penstemon grandi?orus,0,Penstemon grandiflorus,0 Penstemon tubae?orus,0,Penstemon tubaeflorus,0 Persicaria amphibia,4,Persicaria amphibia var. stipulacea,4 Persicaria arifolia,9,Tracaulon arifolium var. pubescens,9 Persicaria sagittata,7,Tracaulon sagittatum,7 Persicaria virginiana,4,Antenoron virginianum,4 Phedimus aizoon,0,NA,0 Phemeranthus rugospermum,10,Phemeranthus rugospermus,10 Philadelphus ?oridus,0,Philadelphus x polyanthus,0 Philadelphus inodorus,0,NA,0 Phlox bi?da,8,Phlox bifida,8 Phlox glaberrima ssp. interior,9,Phlox glaberrima subsp. interior,9 Phlox maculata ssp. maculata,10,Phlox maculata,10 Phlox maculata ssp. pyramidalis,10,Phlox maculata,10 Phlox pilosa ssp. fulgida,8,Phlox pilosa var. fulgida,8 Phlox pilosa ssp. pilosa,8,Phlox pilosa var. pilosa,8 Phragmites australis ssp. americanus,3,Phragmites americanus,3 Phragmites australis ssp. australis,0,Phragmites australis,0 Physalis heterophylla var. ambigua,3,Physalis heterophylla,3 Physalis heterophylla var. heterophylla,3,Physalis heterophylla,3 Physalis lanceolata,0,NA,0 Physocarpus opulifolius var. intermedius,5,Physocarpus opulifolius,5 Physocarpus opulifolius var. opulifolius,5,Physocarpus opulifolius,5 Physostegia angustifolia,0,Physostegia praemorsa,10 Physostegia virginiana ssp. praemorsa,4,Physostegia praemorsa,10 Physostegia virginiana ssp. virginiana,4,Physostegia virginiana,4 Plagiobothrys hispidulus,0,Plagiobothrys scouleri,0 Platanthera huronensis,10,Platanthera aquilonis,10 Poa wol?i,8,Poa wolfii,8 Poinsettia dentata,0,Euphorbia dentata,0 Poinsettia dentata var. cuphosperma,0,NA,0 Poinsettia dentata var. dentata,0,Euphorbia dentata,0 Polanisia trachysperma,0,Polanisia dodecandra subsp. trachysperma,0 Polygala ambigua,10,Polygala verticillata var. ambigua,10 Polygala polygama,9,Polygala polygama var. obtusata,9 Polygala senega,8,Polygala senega,10 Polygala verticillata,7,Polygala verticillata var. isocycla,7 Polygala verticillata var. verticillata,7,Polygala verticillata var. isocycla,7 Polygonum ramosissimum ssp. prolificum,0,Polygonatum prolificum,0 Polygonum ramosissimum ssp. ramosissimum,1,Polygonatum ramosissimum,1 Populus nigra var. italica,0,Populus nigra cult. italica,0 Populus x canescens,0,Populus canescens,0 Potamogeton x hagstroemii,8,Potamogeton x hagstroemii,10 Potamogeton x haynesii,10,NA,NA Potentilla indica,0,Duchesnea indica,0 Potentilla intermedia,0,Potentilla inclinata,0 Potentilla pensylvanica var. bipinnati?da,10,Potentilla bipinnatifida,10 Poterium sanguisorba,0,Poterium sanguisorba var. polygamum,0 Prionopsis ciliata,0,Haplopappus ciliatus,0 Proboscidea louisianica,0,Proboscidea louisiana,0 Proserpinaca palustris var. crebra,6,Proserpinaca palustris,6 Proserpinaca palustris var. palustris,6,Proserpinaca palustris,6 Prunella vulgaris ssp. lanceolata,1,Prunella vulgaris var. lanceolata,1 Prunella vulgaris ssp. vulgaris,0,Prunella vulgaris,0 Prunus subhirtella,0,Prunus sargentii,0 Psoralidium tenui?orum,10,Psoralidium tenuiflorum,10 Psoralidium tenui?orum var. ?oribundum,10,Psoralidium tenuiflorum,10 Psoralidium tenui?orum var. tenui?orum,10,Psoralidium tenuiflorum,10 Ptelea trifoliata ssp. trifoliata,4,Ptelea trifoliata,4 Ptelea trifoliata ssp. trifoliata var. mollis,6,Ptelea trifoliata var. mollis,6 Pueraria montana,0,Pueraria montana var. lobata,0 Pyrola asarifolia,10,Pyrola asarifolia var. purpurea,10 Pyrus betulaefolia,0,Pyrus betulifolia,0 Quercus muhlenbergii,8,Quercus muehlenbergii,8 Ranunculus gmelinii,10,Ranunculus gmelinii var. hookeri,10 Ranunculus hispidus var. caricetorum,10,Ranunculus caricetorum,10 Ranunculus hispidus var. hispidus,8,Ranunculus hispidus,8 Ranunculus hispidus var. nitidus,5,Ranunculus septentrionalis,5 Ranunculus testiculatus,0,Ceratocephala testiculata,0 Rhamnus lanceolata,10,Rhamnus lanceolata,9 Rhamnus lanceolata ssp. glabrata,10,Rhamnus lanceolata,9 Rhamnus lanceolata ssp. lanceolata,10,Rhamnus lanceolata,9 Rhododendron groenlandicum,10,Ledum groenlandicum,10 Rhus aromatica var. aromatica,9,Rhus aromatica,9 Rhus hirta,1,Rhus typhina,1 Rhus hirta cult. laciniata,0,Rhus typhina cult. laciniatum,0 Rhynchospora globularis,10,Rhynchospora recognita,10 Ribes aureum var. villosum,0,Ribes odoratum,0 Robinia luxurians,0,Robinia meomexicana,0 Rorippa palustris,4,NA,NA Rorippa palustris ssp. hispida,3,Rorippa palustris var. hispida,3 Rorippa palustris ssp. palustris,2,Rorippa palustris var. fernaldiana,2 Rosa cinnamomea,0,Rosa majalis,0 Rosa micrantha,0,Rosa rubiginosa,0 Rosa virginiana,0,NA,5 Rosa x rudiuscula,5,Rosa x medioccidentis,5 Rubus armeniacus,0,Rubus bifrons,0 Rubus bellobatus,0,NA,NA Rubus idaeus ssp. idaeus,0,Rubus idaeus,0 Rubus idaeus ssp. strigosus,3,Rubus strigosus,1 Rubus parviflorus,0,NA,0 Rubus pergratus,2,Rubus avipes,2 Rubus setosus,10,NA,NA Rudbeckia fulgida var. sullivantii,6,Rudbeckia sullivantii,10 Rudbeckia grandi?ora,0,Rudbeckia grandiflora,0 Rumex britannica,8,Rumex orbiculatus,8 Rumex conglomeratus,0,NA,NA Sagittaria calycina,0,Lophotocarpus calycinus,0 Salicornia maritima,0,Salicornia rubra,0 Salix cordata,10,NA,NA Salix humilis var. humilis,6,Salix humilis,6 Salix humilis var. tristis,6,Salix humilis,6 Salix x pendulina,0,NA,NA Salix x sepulcralis,0,NA,NA Salvia azurea var. grandi?ora,0,Salvia azurea var. grandiflora,0 Salvia re?exa,0,Salvia reflexa,0 Salvia sylvestris,0,Salvia x sylvestris,0 Sambucus nigra ssp. canadensis,4,Sambucus canadensis,4 Sambucus nigra ssp. canadensis cult. acutiloba,0,Sambucus canadensis cult. acutiloba,0 Sambucus nigra ssp. nigra,0,Sambucus nigra,0 Sambucus racemosa,10,Sambucus racemosa subsp. pubens,10 Sanicula canadensis var. canadensis,5,Sanicula canadensis,5 Satureja acinos,0,Acinos arvensis,0 Saxifraga pensylvanica,10,Micranthes pensylvanica,10 Scheuchzeria palustris ssp. americana,10,Scheuchzeria palustris subsp. americana,10 Schoenoplectus fluviatilis,4,Bolboschoenus fluviatilis,3 Schoenoplectus hallii,10,Schoenoplectiella hallii,5 Schoenoplectus maritimus,0,Bolboschoenus maritimus,0 Schoenoplectus purshianus,5,Schoenoplectiella purshiana,5 Schoenoplectus smithii,10,Schoenoplectiella smithii,10 Schrankia nuttallii,0,Mimosa quadrivalvis var. nuttallii,0 Scilla non-scripta,0,Hyacinthoides non-scripta,0 Scirpus atrocinctus,6,Scirpus cyperinus,6 Scleria pauciflora var. caroliniana,10,Scleria pauciflora,10 Scleria pauciflora var. pauciflora,10,Scleria pauciflora,10 Scutellaria elliptica,10,Scutellaria elliptica var. hirsuta,10 Scutellaria parvula,7,Scutellaria parvula,8 Sedum alboroseum,0,Hylotelephium erythrostictum,0 Sedum re?exum,0,Sedum rupestre,0 Selaginella apoda,10,Selaginella eclipes,10 Senecio hieraciifolius,0,Erechtites hieraciifolius,0 Senecio jacobaea,0,Jacobaea vulgaris,0 Senecio suaveolens,10,Hasteola suaveolens,10 Senna obtusifolia,0,Senna tora,0 Setaria parviflora,0,Setaria parviflora,5 Setaria viridis var. viridis,0,Setaria viridis,0 Sibara virginica,0,Planodes virginicum,0 Sibbaldia tridentata,10,Sibbaldiopsis tridentata,10 Silene nocti?ora,0,Silene noctiflora,0 Silphium integrifolium var. integrifolium,5,Silphium integrifolium,5 Silphium integrifolium var. laeve,5,Silphium speciosum,0 Silphium laciniatum var. laciniatum,5,Silphium laciniatum,5 Silphium laciniatum var. robinsonii,5,Silphium laciniatum,5 Sisymbrium officinale var. leiocarpum,0,Sisymbrium officinale,0 Sisymbrium officinale var.officinale,0,Sisymbrium officinale,0 Sisyrinchium montanum var. crebrum,8,Sisyrinchium montanum,10 Sisyrinchium montanum var. montanum,8,Sisyrinchium montanum,10 Smallanthus uvedalius,10,Smallanthus uvedalia,10 Smilax lasioneuron,5,Smilax lasioneura,5 Solanum americanum,0,Solanum ptychanthum,NA Solanum dulcamara var. dulcamara,0,Solanum dulcamara,0 Solanum dulcamara var. villosissimum,0,Solanum dulcamara,0 Solanum tri?orum,0,Solidago triflorum,0 Solidago canadensis var. canadensis,1,Solidago canadensis,1 Solidago canadensis var. hargeri,1,Solidago canadensis,1 Solidago glaberrima,7,Solidago missouriensis,9 Solidago ohioensis,10,Oligoneuron ohiense,10 Solidago ptarmicoides,10,Oligoneuron album,10 Solidago riddellii,8,Oligoneuron riddellii,8 Solidago rigida,3,Oligoneuron rigidum,3 Solidago rigida ssp. humilis,3,Solidago deamii,10 Solidago rigida ssp. rigida,3,Oligoneuron rigidum,3 Solidago rigidiuscula,7,Solidago speciosa,8 Solidago sempervirens var. mexicana,0,Solidago sempervirens,0 Solidago sempervirens var. sempervirens,0,Solidago sempervirens,0 Solidago simplex ssp. randii var. gillmanii,10,Solidago deamii,10 Sonchus arvensis ssp. arvensis,0,Sonchus arvensis,NA Sonchus arvensis ssp. uliginosus,0,Sonchus uliginosa,0 Sorbus americana,10,Sorbus decora,10 Sorghum bicolor ssp. drummondii,0,Sorghum x drummondii,0 Sorghum bicolor ssp. verticilliflorum,0,Sorghum bicolor,0 Sparganium emersum,10,Sparganium emersum,8 Spirodela polyrhiza,4,Spirodella polyrhiza,4 Stachys palustris,0,Stachys pilosa,5 Stachys tenuifolia,5,Stachys tenuifolia,6 Stuckenia filiformis ssp. occidentalis,0,Stuckenia filiformis subsp. occidentalis,0 Sullivantia sullivantii,10,Sullivantia renifolia,10 Symphoricarpos albus var. albus,10,Symphoricarpos albus,10 Symphyotrichum ciliatum,0,Brachyactis ciliata,0 Symphyotrichum lanceolatum ssp. lanceolatum var. interior,3,Symphyotrichum lanceolatum var. interior,3 Symphyotrichum lanceolatum ssp. lanceolatum var. lanceolatum,3,Symphyotrichum lanceolatum,3 Symphyotrichum praealtum var. angustior,7,Symphyotrichum praealtum,7 Symphyotrichum praealtum var. praealtum,7,Symphyotrichum praealtum,7 Symphyotrichum praealtum var. subasperum,7,Symphyotrichum praealtum,7 Symphytum of?cinale,0,Symphytum officinale,0 Syringa pubescens ssp. patens,0,Syringa pubescens subsp. patula,0 Tephrosia virginiana var. holosericea,8,Tephrosia virginiana,8 Tephrosia virginiana var. virginiana,8,Tephrosia virginiana,8 Teucrium canadense var. canadense,3,Teucrium canadense,3 Thalictrum thalictroides,7,Anemonella thalictroides,7 Thaspium trifoliatum var. ?avum,8,Thaspium trifoliatum,8 Thaspium trifoliatum var. trifoliatum,8,Thaspium trifoliatum,8 Thelypteris palustris var. pubescens,7,Thelypteris palustris,7 Thymus serpyllum,0,Thymus pulegioides,0 Tomanthera auriculata,8,Agalinis auriculata,8 Toxicodendron radicans ssp. negundo,2,Toxicodendron radicans,2 Toxicodendron radicans ssp. radicans,2,Toxicodendron radicans,2 Trichophorum caespitosum,10,Trichophorum cespitosum,10 Tridens ?avus,0,Tridens flavus,1 Trifolium re?exum var. glabrum,10,Trifolium reflexum var. glabrum,10 Trillium grandi?orum,9,Trillium grandiflorum,9 Triosteum aurantiacum,4,Triosetum aurantiacum,5 Triosteum illinoense,4,Triosteum aurantiacum var. illinoense,5 Triosteum perfoliatum,5,Triosteum perfoliatum,4 Tripleurospermum maritimum ssp. inodora,0,Tripleurospermum inodorum,0 Ulmus x notha,0,Ulmus x intermedia,0 Urtica dioica ssp. gracilis,1,Urtica gracilis,1 Vaccinium macrocarpon,10,Oxycoccus macrocarpos,10 Vaccinium oxycoccos,10,Oxycoccus palustrus,10 Valeriana of?cinalis,0,Valeriana officinalis,0 Valerianella chenopodifolia,8,Valerianella chenopodiifolia,8 Veratrum virginicum,10,Melanthium virginicum,10 Verbascum virgatum,0,NA,NA Verbena bipinnatifida,0,Glandularia bipinnatifida,0 Verbena x deamii,0,Verbena x perriana,0 Veronica anagallis-aquatica,9,Veronica anagallis-aquatica,0 Veronica hederaefolia,0,Veronica hederifolia,0 Veronica peregrina ssp. peregrina,0,Veronica peregrina var. peregrina,0 Veronica peregrina ssp. xalapensis,3,Veronica peregrina var. xalapensis,3 Veronica teucrium,0,Veronica austriaca subsp. teucrium,0 Viburnum nudum var. cassinoides,10,Viburnum cassinoides,10 Viburnum opulus var. americanum,10,Viburnum trilobum,10 Viburnum opulus var. opulus,0,Viburnum opulus,0 Viburnum ra?nesquianum,8,Viburnum rafinesquianum,8 Vicia sativa ssp. nigra,0,Vicia angustifolia,0 Viola ?mbriatula,6,Viola sagittata,5 Viola bicolor,0,Viola rafinesquii,0 Viola blanda,10,Viola blanda var. palustriformis,10 Viola blanda var. blanda,10,Viola blanda var. palustriformis,10 Viola lanceolata ssp. lanceolata,7,Viola lanceolata,7 Viola lanceolata ssp. vittata,7,Viola lanceolata,7 Viola macloskeyi ssp. pallens,10,Viola pallens,10 Viola pedata,9,Viola pedata var. lineariloba,9 Viola septentrionalis,3,Viola sororia,NA Vitis aestivalis var. aestivalis,5,Vitis aestivalis,5 Vitis aestivalis var. bicolor,5,Vitis aestivalis,5 Vulpia octoflora var. octoflora,1,Vulpia octoflora,1 Vulpia octoflora var. tenella,1,Vulpia octoflora,1 Xanthium strumarium,0,NA,NA Yucca smalliana,0,Yucca flaccida,0 ================================================ FILE: Imputing missing bikeshare data/README.md ================================================ # Imputing missing bikeshare data with R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Imputing missing bikeshare data with R**, which you can find at . ================================================ FILE: Imputing missing bikeshare data/bikeshare missing data.R ================================================ # Missing values in the Bikeshare data set library(tidyverse) library(ISLR2) library(broom) ?Bikeshare glimpse(Bikeshare) 365 * 24 # 8760 hours in a year, 115 missing rows sum(Bikeshare$bikers == 0) # none # Add missing rows to Bikeshare bikes_new <- expand_grid(day = 1:365, hr = as.factor(0:23)) %>% left_join(Bikeshare, by = join_by(day, hr)) # Impute missing values as appropriate bikes_imputed <- bikes_new %>% mutate(bikers = replace_na(bikers, 0), temp = ifelse(is.na(temp), (lead(temp) + lag(temp))/2, temp), temp = ifelse(is.na(temp), lead(temp), temp), temp = ifelse(is.na(temp), lag(temp), temp), weathersit = case_when(!is.na(weathersit) ~ weathersit, TRUE ~ lag(weathersit)), weathersit = case_when(!is.na(weathersit) ~ weathersit, TRUE ~ lead(weathersit)), workingday = mean(workingday, na.rm = TRUE), .by = day) sum(is.na(bikes_imputed$temp)) # Compare poisson models model_old <- glm(bikers ~ temp + workingday + weathersit, data = Bikeshare, family = "poisson") model_new <- glm(bikers ~ temp + workingday + weathersit, data = bikes_imputed, family = "poisson") tidy(model_old) tidy(model_new) # One test value new_data <- data.frame(temp = .5, workingday = 0, weathersit = "clear") predict(model_old, new_data, type = "response") predict(model_new, new_data, type = "response") ================================================ FILE: Integrate AI with GitHub Copilot/README.md ================================================ # Integrate AI into your R workflows with GitHub Copilot []() Hi everybody! In this folder, you'll find materials supporting my vid, **Integrate AI into your R workflows with GitHub Copilot**, which you can find at . ================================================ FILE: Integrate AI with GitHub Copilot/script - integrating AI.R ================================================ library(tidyverse) ggplot(penguins, aes(x = bill_len, y = body_mass, color = species)) + geom_point() + labs(title = "Penguin Bill Dimensions", x = "Bill Length (mm)", y = "Bill Depth (mm)") + theme_minimal() glimpse(penguins) # a histogram showing body mass for penguins colored by species # use an accessible color palette and the default position ggplot(penguins, aes(x = body_mass, fill = species)) + geom_histogram(position = "identity", bins = 30, alpha = 0.7) + labs(title = "Penguin Body Mass Distribution", x = "Body Mass (g)", y = "Count") + scale_fill_brewer(palette = "Set1") + theme_minimal() # load the scooby data set library(readxl) scooby <- read_excel("scooby.xlsx") glimpse(scooby) # a plot showing imdb ratings vs network for scooby ggplot(scooby, aes(x = network, y = imdb, color = network)) + geom_boxplot() + labs(title = "IMDB Ratings by Network", x = "Network", y = "IMDB Rating") + scale_color_brewer(palette = "Set2") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # a data analysis for scooby considering ratings and the gender of the unmasker ================================================ FILE: Latex for R users/LaTeX for R users.qmd ================================================ --- title: "LaTeX for R users" format: latex: include-in-header: - text: \usepackage{physics} --- ## Using math & scientific notation in your docs Inline: $\alpha$ Indented: $$\hat{y}_i = \beta_0 + \sum_{j=1}^p \beta_jx_{ji}$$ Functions: $\sin x,\ \log_2{x},\hspace{.5cm} \sqrt[3]{x^2+1}$ Fractions: $\frac{p}{q}$ $$\left[\frac{\$5}{\left(x+\frac{1}{y}\right)}\right\}$$ Changing faces: $\mathbb{R}, \mathcal{C}$. Also $\frac{\text{ordinary stuff}}{2}$ A symbol from the physics package: $\pdv{x}$ ```{r} library(tidyverse) ggplot(mtcars, aes(x = mpg)) + geom_histogram() ``` Aligned equations: \begin{align*} (x + y)^2 &= x^2 + 2xy + y^2\\ &\ne x^2 + y^2 \end{align*} ================================================ FILE: Latex for R users/README.md ================================================ # LaTeX for R users []() Hi everybody! In this folder, you'll find materials supporting my vid, **LaTeX for R users**, which you can find at . ================================================ FILE: Learn R in 39 minutes/README.md ================================================ # Learn R in 39 minutes []() Hi everybody! In this folder, you'll find materials supporting my vid, **Learn R in 39 minutes**, which you can find at . ================================================ FILE: Learn R in 39 minutes/script - R in 39.R ================================================ library(tidyverse) data() View(mpg) ?mpg ?mean glimpse(mpg) ?filter filter(mpg, cty >= 20) mpg_efficient <- filter(mpg, cty >= 20) View(mpg_efficient) mpg_ford <- filter(mpg, manufacturer == "ford") View(mpg_ford) mpg_metric <- mutate(mpg, cty_metric = .425144 * cty) glimpse(mpg_metric) mpg_metric <- mpg %>% mutate(cty_metric = .425144 * cty) View(mpg) mpg %>% group_by(class) %>% summarize(mean(cty), median(cty)) # Data viz with ggplot2 ggplot(mpg, aes(x = cty)) + geom_histogram() + labs(x = "City mileage") ggplot(mpg, aes(x = cty)) + geom_freqpoly() + labs(x = "City mileage") ggplot(mpg, aes(x = cty)) + geom_histogram() + geom_freqpoly() + labs(x = "City mileage") ggplot(mpg, aes(x = cty, y = hwy)) + geom_point() + geom_smooth(method = "lm") ggplot(mpg, aes(x = cty, y = hwy, color = class)) + geom_point() + scale_color_brewer(palette = "Dark2") ================================================ FILE: Linear modeling using categorical variables/README.md ================================================ # Linear modeling in R using categorical variables - parallel slopes models []() Hi everybody! In this folder, you'll find materials supporting my vid, **Linear modeling in R using categorical variables - parallel slopes models**, which you can find at . ================================================ FILE: Linear modeling using categorical variables/Script - parallel slopes models.R ================================================ # multiple regression with a categorical explainer library(tidyverse) library(tidymodels) data(crickets) View(crickets) ggplot(crickets, aes(x = temp, y = rate, col = species)) + geom_point() + geom_smooth(method = "lm", se = FALSE) model_additive <- lm(rate ~ temp + species, data = crickets) summary(model_additive) ggplot(crickets, aes(x = temp, y = rate, col = species)) + geom_point() + geom_abline(aes(intercept = -7.210906, slope = 3.602753, col = "O. exclamationis")) + geom_abline(aes(intercept = -7.210906 - 10.06529, slope = 3.602753, col = "O. niveus")) model_interactive <- lm(rate ~ temp * species, data = crickets) summary(model_interactive) ggplot(crickets, aes(x = temp, y = rate, col = species)) + geom_point() + geom_abline(aes(slope = 3.7514, intercept = -11.0408, col = "O. exclamationis")) + geom_abline(aes(slope = 3.7514 - .2340, intercept = -11.0408- 4.3484, col = "O. niveus")) + geom_smooth(method = "lm", se = F) ================================================ FILE: Locating files with here()/README.md ================================================ # Locating files in R with here() []() Hi everybody! In this folder, you'll find materials supporting my vid, **Locating files in R with here()**, which you can find at . ================================================ FILE: Locating files with here()/Script - here.R ================================================ # You should be working in a project called sample_project that includes a # folder called data containing the Scooby.xlsx data set. library(here) library(readxl) file <- here("data", "Scooby.xlsx") scoobs <- readexcel(file) # Data source: # https://www.kaggle.com/datasets/williamschooleman/scoobydoo-complete ================================================ FILE: Log-normal/README.md ================================================ # The log-normal distribution []() Hi everybody! In this folder, you'll find materials supporting my vid, **The log-normal distribution**, which you can find at . ================================================ FILE: Log-normal in R/README.md ================================================ # Log-normal calculations using R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Log-normal calculations using R**, which you can find at . ================================================ FILE: Log-normal in R/script - lognormal in R.R ================================================ # Log-normal problems library(tidyverse) # Problem 1 plnorm(1000, 6.1, 1.0) - plnorm(500, 6.1, 1.0) # Problem 2 qlnorm(.99, 6.1, 1.0) # Problem 3 fresh <- rlnorm(100, 6.1, 1.0) fresh qplot(fresh, geom = "histogram") ================================================ FILE: Logistic regression example/README.md ================================================ # Logistic regression with R: example []() Hi everybody! In this folder, you'll find materials supporting my vid, **Logistic regression with R: example**, which you can find at . ================================================ FILE: Logistic regression example/logistic regression in R example.R ================================================ # Logistic regression in R: example library(tidymodels) # Prep data iris <- iris %>% mutate(setosa = as.integer(Species == "setosa")) View(iris) # Split data set.seed(2) split <- initial_split(iris, prop = .80, strata = setosa) iris_train <- training(split) iris_test <- testing(split) View(iris_train) # Visualize the data ggplot(iris_train, aes(x = Sepal.Length, y = setosa)) + geom_jitter(height = .05, alpha = .5) + geom_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE) + theme_minimal() # Build that model model <- glm(setosa ~ Sepal.Length, data = iris_train, family = "binomial") summary(model) # evaluate the model on the testing set iris_test <- iris_test %>% mutate(setosa_prob = predict(model, iris_test, type = "response"), setosa_pred = ifelse(setosa_prob > .5, 1, 0)) View(iris_test) t <- table(iris_test$setosa, iris_test$setosa_pred) sum(diag(t)) / sum(t) # 83.3% accuracy 8/10 # TPR or sensitivity 2/10 # FNR 17/20 # TNR or specificity 3/20 # FPR ================================================ FILE: Logistic regression in R/README.md ================================================ # Logistic regression in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Logistic regression in R**, which you can find at . ================================================ FILE: Logistic regression in R/admissions.csv ================================================ gpa,admitted 2.3,0 3,1 2.5,0 2.9,1 3.7,1 3.6,1 3.2,1 3.4,1 2.1,0 2.3,0 2.6,0 4,1 4,1 3.1,0 3.9,1 3.1,1 2.6,0 3.6,1 3.3,0 4,1 2.8,0 2.2,0 3.6,1 3.2,1 2.3,0 3.2,1 2.1,0 2.6,0 4,1 3,1 2.5,0 2.1,0 2.9,0 2.8,0 3.6,1 2.5,0 3.8,1 3.7,1 2.2,0 2.1,0 2.9,1 2.9,0 2.9,0 3.5,1 4,1 2.1,0 2.2,0 3.5,1 3.3,1 3.7,1 3,1 2.2,1 2.3,0 3,0 3.2,1 2.5,0 3.4,1 2.6,0 2.4,0 2,0 3.8,1 2.6,0 3,1 3.4,0 2.2,0 3.9,1 2.8,0 3.7,1 2.7,1 2.2,0 3.4,0 3.7,0 3.8,1 3.8,1 3.2,0 2.5,0 3.8,1 2.3,0 2.1,0 4,1 2.3,0 3.6,1 2.3,1 3.9,1 3.6,0 3.5,1 2.7,0 3.8,1 2.2,0 2.7,0 2.5,0 2.4,0 2.3,0 2.8,0 3.2,1 2.4,0 3.8,1 3.7,1 3.2,0 3.2,1 2,0 2.8,1 2,0 2.3,0 2,0 4,1 2.7,1 3.3,1 3.7,1 4,1 3.8,1 2.7,0 3.8,1 3,1 3.2,1 2.8,0 3.2,1 2.8,0 3.6,1 3.5,1 2.3,0 3.4,1 3.7,1 4,1 2.4,0 2.3,0 2.4,0 3.2,1 3.1,0 3.4,1 3.7,0 3.8,1 3.1,1 3.4,1 3.1,0 2.6,0 2.3,0 2.3,0 2.6,0 2.3,0 2.6,0 2.9,0 2,0 3.4,1 2.3,0 2.3,0 2.5,0 3.3,1 2.8,0 4,1 3.7,1 3.8,1 4,1 2.3,0 2.2,0 3.3,1 2.5,0 2.4,0 3.3,1 3.1,0 2.8,0 3.7,1 4,1 3.6,0 2.3,1 2.2,0 3.8,1 2.7,1 2.6,0 3.9,1 2.1,0 4,1 3.1,0 3.4,1 2.9,0 3.8,1 2.7,1 3.5,0 3.9,1 3.9,1 3.3,1 3,0 3.8,1 2.3,0 2.9,0 2.9,0 3.5,1 2.6,1 2.9,1 3.6,1 3.6,1 3.4,1 2.4,0 2.4,0 2.7,1 2.3,0 3.1,1 3.1,0 2,0 2.1,1 3.3,1 3.2,1 2.8,1 3.5,1 2.3,0 3.1,1 2.4,0 3.2,1 3.5,1 2,0 2.4,0 2.2,0 2,0 3.3,1 3.6,1 3.3,1 3.3,0 3.4,1 2.1,0 2.7,0 3,0 2.6,1 2.6,1 3.5,1 2,0 3.3,0 2.5,0 3.4,1 2.8,1 2.8,1 2.4,0 2.4,0 2.7,1 3,1 4,1 4,1 4,1 2.8,0 2,0 3.9,1 2.7,0 3.8,1 2.2,0 3,1 3.6,1 2.9,1 3.1,1 3.9,1 3.1,0 2.2,0 2.4,0 2.5,0 2.9,0 2.7,0 2.6,0 3.2,0 3.5,1 3.4,1 2.4,0 3.2,1 3.8,1 3.6,1 4,1 2.5,0 3.9,1 2.9,1 2,0 2.8,0 2.3,0 2.8,0 4,1 3.4,1 3.5,1 2.9,0 3.5,1 2.1,0 2.1,0 2.6,0 2.1,0 3.8,1 3,0 3.1,1 3.9,1 4,1 3.7,1 3.8,0 3.5,1 3.9,1 3.8,1 3.2,1 2.1,0 2.9,1 3.7,1 4,1 3.1,0 3.3,1 2.9,1 3.9,1 3.9,1 4,1 4,1 2.5,0 2.5,0 2.1,0 2.9,1 3.9,1 2.8,0 3.4,1 2,0 3.1,1 2.6,0 2.5,0 2.1,0 4,1 2,0 2.6,0 3.2,1 2.1,0 3.8,1 3.8,1 2.7,0 2,0 3.5,1 3.9,1 3.7,1 2.5,0 2.4,1 3.8,1 2.6,1 3.6,1 3.6,1 3,1 2.8,1 2.2,0 3.5,1 3.2,1 2.5,0 2.6,0 3.6,1 3.5,1 2.4,1 3.1,1 3.7,1 2.6,0 2.6,0 3.6,1 2.6,1 2.6,1 3.7,1 2.3,0 3.3,1 3.6,1 2.8,0 3.9,1 3.1,1 2.3,0 2.5,0 2.6,0 3.9,1 2.2,0 2.1,0 3.7,1 2.9,1 3.7,1 3.9,1 3.3,1 2.7,0 2.5,0 2.2,0 2.3,0 3.6,1 3.2,1 2.3,0 3,1 3.9,1 2.7,0 3.2,1 2.3,0 3.3,1 3.8,1 3.6,1 2.4,0 3.7,1 3.6,1 4,1 3.3,0 2.4,0 2.8,0 2.5,0 3.8,1 2.9,0 3.1,0 2.1,0 2,0 2.9,1 3.4,1 2.3,0 3.6,1 2.3,0 2.7,0 2.8,0 2.5,0 2.9,1 2.5,0 3.8,1 3.2,1 3.3,0 3,0 3.7,1 2.9,1 2.7,0 2.3,0 3.5,1 2.9,0 3.3,0 3.5,1 3.6,1 2.7,0 3,1 3,1 2.5,0 3.1,1 3,1 3.4,1 3,1 3.9,1 2.7,0 3.8,1 2.9,1 3.1,0 3.3,1 4,1 3,0 2,0 3.7,1 2,0 3.5,0 2,0 4,1 2.3,0 2.5,0 2.9,0 2.4,0 2.8,1 2.7,1 2.9,1 2.6,0 2,0 2.4,0 2.8,0 2.2,0 2.9,0 2.3,0 4,1 2.2,0 2.8,0 3.3,0 3.1,0 2.3,0 2.4,1 3.8,1 4,1 2.1,0 2.4,0 3.8,1 2.9,0 2.2,0 3.6,1 2.7,1 3.2,1 4,1 3.6,1 2,0 2,0 3.3,1 2.2,0 2.6,1 2.5,0 4,1 3.9,1 3.3,1 2.4,0 2.4,0 2.7,0 3,1 3.5,1 2.8,0 3.5,0 2.7,1 2.7,0 4,1 3.9,1 3.3,1 2.1,0 3.2,1 3.3,1 2.9,0 2.4,0 2.3,0 3.2,1 2.4,0 2.3,0 3.9,1 2.6,0 3.1,1 4,1 2.8,0 2,0 3.1,1 3.9,1 2.1,0 3.3,0 3.5,1 3.3,1 3.1,0 3.7,0 2,0 2.1,0 3.4,1 2.8,0 3,1 2.9,0 3.9,1 3.2,0 2.4,0 3.1,0 3.7,1 4,1 3,1 3,0 3.6,1 2.1,0 3.5,1 2.3,0 2.6,0 2.8,0 3.1,1 4,1 4,1 2.3,0 3.1,0 3.8,1 2.8,0 3.3,1 2.1,0 3.7,1 2.6,0 3.1,1 2.8,0 2.5,0 2.6,0 3.4,1 3.3,1 2.1,0 3.2,1 3,0 2.3,0 3.8,1 2.2,0 3.5,1 2.2,0 2.5,0 2.6,1 3.4,1 3.9,1 3.5,1 2.6,0 2.9,0 2.1,0 3,1 4,1 4,1 2.5,0 2.4,0 2,0 3.3,1 2.9,1 2.9,1 2,0 2,0 2.9,0 3.1,1 2.5,0 3.9,1 2.2,0 3.9,1 3.2,1 3,1 3,0 3.7,1 2.2,0 3.2,1 3.7,1 2.2,0 2.2,0 3.1,1 3.6,1 2.2,0 2.2,0 2.7,1 3,1 2,0 3.4,1 3.3,1 3.6,1 3,0 3.3,1 3.7,1 2.5,0 3.9,1 4,1 3.8,1 2.7,0 2.3,0 2.1,0 2.9,0 3.8,1 3.8,1 3.8,1 2.8,0 3.2,1 2.3,0 2.5,0 2.1,0 3.2,0 3,1 2.9,0 2.1,0 3.3,1 3.6,1 4,1 2.5,0 3.5,1 3.8,1 3.5,1 2.7,1 3.6,1 3.5,1 2.2,0 3.1,1 3.4,1 3.6,1 3.7,1 3.2,1 3.4,1 3,1 2.2,1 3.7,1 3.9,1 2.3,0 2.9,0 4,1 2.4,1 2.3,0 3.7,1 2.4,0 2.9,1 3.5,1 3.1,1 2.3,0 2.5,0 3.2,1 2.2,0 2.7,1 3.6,1 3.6,1 2.9,1 3,1 2.7,0 2.5,0 2.9,1 2.4,0 2.5,1 3.9,1 3.5,1 3.3,1 3,0 2.9,0 3,1 3.4,0 3.2,1 3.5,1 2.1,0 3.1,1 2.8,0 3.6,1 4,1 3.3,1 3.6,1 3.3,0 3.5,0 2.8,0 2.8,1 3.1,0 3.8,1 2.4,0 2.1,0 2.7,0 3.2,1 2.9,0 3.7,1 3.2,1 2,0 2.9,1 3.6,0 3.7,1 2.2,0 2.3,0 2.4,0 3.9,1 2.2,0 2.2,0 3,1 3.3,1 3.9,1 4,1 2.6,0 3.9,1 2.5,0 3.5,1 3.8,1 2.4,0 2.6,0 3.1,1 2.2,0 2.4,0 2.3,0 3.2,1 2.9,1 2.3,0 3.7,1 3.6,1 3.9,1 2.8,0 3.3,1 3.4,1 3.2,1 3.4,1 3.5,1 2.9,1 3.5,0 2.6,0 2,0 2.1,0 3.8,1 2.3,0 2.5,0 4,1 3.3,1 3.2,1 2.7,0 2.6,1 3.3,1 3,1 3.4,1 4,1 2,0 4,0 2.3,0 3.1,1 3.9,1 3.5,1 3.8,1 3.4,1 3.1,1 3,1 2.9,0 3.7,1 2.2,0 3.1,0 3.6,1 4,1 3,1 2.2,0 3.6,1 3.9,1 2.5,0 3.4,1 3.2,1 3.5,1 2.2,0 2,0 3.6,1 2.2,0 3,0 3.5,1 3.6,1 2.7,1 2.9,0 3.6,1 2.3,0 2.3,0 2.5,0 3.8,1 3.3,1 2.9,0 3.1,1 3.3,0 4,1 3.4,1 2,0 3.9,1 2.6,1 3.1,0 3.4,1 2.3,0 3.1,1 2.9,1 3.7,1 2,0 3.6,1 3.7,1 3.7,1 3.1,0 2.8,0 2.2,0 3.4,0 3.5,1 3,0 3,1 3.3,1 3.2,1 2.6,0 2,0 2.4,1 2.5,0 2.5,1 3.8,1 2.5,0 3,1 2.3,0 2.1,0 4,1 2.9,0 3.7,1 2.8,0 3.4,1 2.8,1 2.2,0 3.8,1 2.6,1 3.7,1 2.6,1 2.7,0 2.7,1 3.4,1 2.9,0 3.4,1 3.1,1 3.4,1 2.7,0 3.9,1 2.9,0 3.7,1 2.7,1 3.3,0 2.6,0 2.1,0 2.1,0 3.3,1 2,0 3.8,1 3.8,1 2.2,0 3,0 4,1 2.9,0 2.6,0 2.7,1 3.5,1 4,1 2.6,0 2.8,0 3.2,0 2.6,0 2.1,0 3.7,1 3.6,1 3.5,0 2.3,0 3.1,1 2.2,0 2.2,0 3.3,0 3.6,1 4,1 2.2,0 2.5,0 3.9,1 2.6,1 2.6,0 4,1 3.1,1 2.6,0 3.9,1 3,0 3.7,1 3.2,0 2.4,0 2.1,0 3.8,1 2.4,0 4,1 3,1 3.9,1 3.2,1 3.6,0 2.6,0 2,0 2,0 2,0 3.9,1 2.6,0 2.2,0 3.6,1 2.2,0 3.3,0 2.2,0 3,1 3.4,1 2.9,0 2.9,0 2.6,0 3.1,0 2.2,0 2.6,0 3.7,1 3.4,1 3.2,0 2,0 2.9,0 2.7,0 2,0 2.5,1 2,0 2.9,0 4,1 3.7,1 4,1 3.7,1 2.6,1 2.8,1 2.5,1 2.5,0 3.5,1 2.9,0 2,0 2.5,0 2,0 3.1,0 3,0 3.8,1 2.7,0 3.7,1 3.4,1 3.7,1 2.3,0 2.6,0 3,1 2.1,0 2.4,0 2.5,0 3.6,1 2.5,0 2.8,0 3.6,1 3.9,1 2.1,0 3.1,1 3,0 2.7,0 3.2,1 3.8,1 2.9,1 3.9,1 2.2,0 2.4,0 2.2,0 2.9,0 2.5,0 2.6,0 2.1,0 3.4,1 3.4,1 3.5,0 2.7,1 2.1,0 3.8,1 2.5,0 3.4,1 2.8,0 2.4,1 2,0 2,0 2.5,0 3.2,1 2.7,0 2.4,0 4,1 3.4,1 2.1,0 2.4,0 2,0 3.8,1 4,1 2.7,0 2.4,0 2.5,0 2,0 3.8,1 2.1,0 2.8,0 3.1,0 4,1 2.1,0 2.4,0 2.7,0 2.5,1 2.5,0 2.9,0 3.1,1 2.7,0 3.9,1 2.6,0 2.3,0 3.3,1 4,1 2.5,0 3.3,1 2.1,0 3.4,1 3.9,1 2.1,0 2.7,1 2.8,0 2.4,0 2,0 2.8,1 2.2,0 3.9,1 3.5,1 3.5,1 2.6,0 3.6,1 2.3,0 2.4,0 3,1 3.1,0 4,1 3.9,1 2.2,0 3.7,1 3.1,1 3.9,1 2.6,1 2.4,0 3.9,1 2.7,0 2.4,1 4,1 3.3,0 2.4,0 2.6,0 3.5,1 3.3,1 3.5,1 3.7,1 2.2,0 3.7,1 2.8,0 3.4,1 4,1 2,0 2.6,0 2.5,0 2,0 3,1 2.1,0 3,1 2.1,0 2.5,0 4,1 2.5,0 2.7,0 3,1 3.2,1 3.9,1 2.9,1 3.8,1 2.3,0 3.8,1 2.2,0 3.5,1 4,1 2.6,0 2.8,0 2.7,1 2,0 2.5,0 3.2,1 3.5,1 3.6,1 2.5,0 3.3,1 3.8,1 4,1 2.8,1 2.7,0 3.3,1 3.5,1 2,0 2.6,1 2.1,0 3.8,1 4,1 3.4,1 2.1,0 2.4,0 2.6,0 3.2,1 2.8,0 3.7,1 3.5,1 3.1,1 2,0 3.1,0 3.6,1 2.7,0 3.3,1 3.9,1 2.4,1 3,1 3,0 2.7,0 2.6,0 2.3,0 3.3,1 2.1,0 2.9,0 3.5,0 2.3,0 2.6,0 3.3,1 3.7,1 3.4,1 2,0 2.7,1 3.1,1 2.6,0 2.8,0 2,0 2.7,1 3.4,1 3.7,1 3.3,1 3.7,1 2.4,0 3.7,1 2.5,1 2.7,0 2.2,0 3.3,0 2.2,0 2.4,0 2.7,0 2.8,1 3.1,1 3.3,0 3.3,0 3.6,1 3.4,1 3.1,1 3.3,1 3.4,1 2.3,0 3.8,1 3.6,1 2.8,0 2.7,0 3.5,1 3.9,1 3.8,1 2.9,0 3.8,1 3.4,1 3.5,0 2.9,0 2.5,0 2,0 3.3,0 2.2,0 3.3,1 3.4,1 3.1,0 2.3,0 2.3,0 2.5,0 2.9,1 2.5,0 2.2,0 2.2,0 3.7,0 3.7,0 4,1 2,0 3.7,1 2.5,0 3.4,1 2.1,0 3.5,1 3.2,1 3.1,1 3.5,1 2.6,0 3.8,1 3.3,1 3.4,1 3.6,1 2.6,1 3.3,0 3.5,1 2.3,0 3.4,1 2,0 4,1 3.9,1 2,0 3.3,1 2,0 2.6,0 3.4,1 2.5,1 2.7,0 3.2,1 2.1,0 2.8,1 2.4,0 4,1 3.6,1 3.6,1 2.9,0 2.4,0 3.8,1 3.5,1 3.4,1 2.3,0 2.2,0 3.4,1 2.2,0 3.9,1 2.1,0 3.8,1 3.1,1 2.2,0 3.9,1 2.9,0 3.2,1 3,0 3.8,1 3.5,1 2.9,1 3.6,1 3.3,1 3.3,0 2,0 3.1,0 2.8,0 3.5,1 2.2,0 2.7,1 2.8,1 2.2,0 3.5,1 3,0 3,0 2.2,0 3,1 3.6,1 2.9,0 3.2,1 2.1,0 2.8,0 3.2,1 4,1 3,1 3.4,1 2.8,0 2.4,1 3.8,1 3.7,1 2.9,1 3.4,1 3.6,1 3,0 3.1,1 2.8,0 3.5,1 2.1,0 2,0 2.2,0 3.1,0 3.8,1 2,0 2.5,0 3.4,1 3,1 3.7,1 3.8,1 2.2,0 3.2,1 3.4,1 2.1,0 3.9,1 3.3,0 2.8,1 2.1,0 3.4,1 2.5,0 4,1 2.9,0 3.9,1 3.4,1 2.3,0 2.3,1 3.9,1 3.9,1 2.4,0 2.1,0 3.9,1 2.7,1 3.7,1 3.4,1 2.9,1 2.5,0 2.2,0 2.5,0 2.1,0 3.8,1 2.3,0 4,1 3.2,1 2.9,1 2.9,1 3.6,1 3.6,1 2.5,0 2,0 3.4,1 2.7,1 2,0 2,0 2.6,0 2.9,0 3.3,0 3.1,1 3.4,1 3.1,0 2.1,0 3.7,1 2.2,0 3.6,1 2.5,0 2.5,0 2.9,1 3,1 3.9,1 2.4,0 3.4,1 3.8,1 3.4,0 2.8,1 2.7,1 2.5,0 2.5,0 3.2,1 3.2,1 3.1,0 2.4,0 2.3,0 4,1 3.5,1 2.3,0 3.3,1 3.7,1 3.7,1 2.1,0 2.7,0 2.8,0 2.9,0 2.3,0 2.2,0 2.3,0 2.9,0 3.4,1 3.8,1 3.6,1 3.6,1 2.4,0 2,0 3.9,1 3.5,1 3.1,1 3.5,1 2.4,0 3,0 3.4,1 3.1,1 3.6,1 3.3,1 2,0 3.1,1 2.8,0 2,0 3.8,1 2.7,1 3,1 3.4,1 2.4,0 3.5,0 2.1,0 3,1 3.5,0 2.6,0 3.1,1 2.8,1 2.3,0 3.5,0 2.2,0 2.4,0 2.4,0 3.9,1 2,0 3.5,0 3.7,1 3.6,1 3.3,1 3.1,1 2.8,0 3.8,0 2.2,0 3.3,1 2,0 3.3,1 2.5,0 2.9,1 2.4,0 3.4,1 2.8,1 3.5,1 3,0 3.1,1 3.7,1 2.3,0 3,1 3.2,0 2.1,0 3.9,1 2.6,1 3.6,1 2.7,1 3,0 2.4,0 2.4,0 3.1,1 2.7,0 2.3,0 2.8,1 2,0 2,0 3.4,1 2.4,0 3.9,1 2.2,0 2.5,0 2.8,0 3,0 3.8,1 2.1,0 2.8,0 2.8,1 3.3,1 3.4,1 3.8,1 2.2,0 3.3,0 3.1,1 3.6,1 3.1,0 3.5,1 2.1,0 2.7,1 3.5,1 2,0 2.1,0 3.1,0 3.3,1 2.7,0 3,1 2.8,0 2.4,0 3.9,0 3.7,1 3.3,1 2.4,0 2.9,1 2.2,0 2.3,0 2.4,0 3.3,1 3.3,0 2.8,0 2.8,0 2.8,1 3.4,1 2.6,0 2.2,0 2.1,0 4,1 2.1,0 3.7,1 3,1 2.1,1 2.4,0 2.1,0 3.5,1 3.9,1 3.6,0 3.9,1 4,1 3,0 3.5,1 2.2,0 2,0 2.9,0 2,0 2.2,0 3.8,1 2.4,0 2.6,0 3.5,1 2.6,1 2.4,0 2.7,0 3,1 2.4,0 3.1,0 3.6,0 2.7,1 2.1,0 2,0 2.6,1 3.6,1 3.3,1 2.3,0 2.6,0 2.7,0 2.1,0 2.9,0 3,0 2,0 2.2,0 4,1 2.3,0 3.6,1 2.2,0 3.6,1 2.8,0 4,1 3.1,1 3.8,1 2.3,0 2.5,0 2.2,0 3.2,0 4,1 2,0 2.7,0 2.3,0 2.3,0 3.9,1 3.9,1 2.2,0 3.9,1 2.8,0 3,1 3.2,1 3.1,1 4,1 2.8,0 3.1,0 2.7,1 3.5,1 2.2,0 3.6,1 3.1,1 2,0 2.7,0 3.1,1 3.2,0 3.6,1 2.1,0 3.7,1 3.2,1 2.8,1 3.2,0 2.5,0 2.4,1 2,0 3.4,1 3,0 3.2,1 3.7,1 3.9,1 3.8,1 3.3,1 2.3,0 2.2,0 2.9,0 3.8,1 2.4,0 3.6,1 2.5,0 3.7,1 3.9,1 3.4,1 3.7,1 4,1 2,0 2.4,0 2.3,0 3.6,1 3.2,1 3.8,1 3.5,1 2,0 2.4,0 3,1 3.7,1 3.5,0 3.4,1 3.3,0 4,1 3,1 2.9,0 3.1,0 3.7,1 3.7,0 2.2,0 3.6,1 2.9,0 3.6,1 4,1 2.6,0 3.2,0 2.8,0 2.3,0 3.5,0 3.2,1 3,1 2.4,0 4,1 2.6,0 2,0 2.4,0 4,1 3,0 2.3,0 2.5,0 2.4,0 2.6,0 3,0 2.9,0 2.8,0 2,0 2.5,0 2.8,1 2.9,0 2.7,0 3.4,1 3.2,0 3,1 3.2,0 3.2,1 3.5,1 3.2,1 2.7,1 3.9,1 3,1 3.3,1 2.8,0 2.5,0 4,1 3.9,1 3.5,1 2.5,0 3.2,1 2.3,0 4,1 3.9,1 2.4,0 3.2,1 4,1 3.8,1 3.8,1 3.1,1 2.1,0 3.2,0 2.3,0 2.7,1 3.2,1 4,1 2.7,1 3.4,1 2.1,0 2.9,0 3.1,1 2.6,0 3.7,1 2.6,0 3.8,1 3.9,1 3.9,1 3.9,0 3,0 2.5,1 2.3,0 2.4,0 2.2,0 3.4,1 3.6,1 3.6,1 2.7,0 2,1 3.8,1 3.2,1 3.4,0 3.7,1 3,1 2.2,1 3,0 2,0 2.6,0 3.2,1 3.8,1 2.1,0 4,1 2.7,0 2.8,0 2.2,0 3.1,0 3.7,1 3.8,1 2.7,1 2.2,0 2.7,1 2.6,0 3.2,1 2.6,0 3.8,1 2.9,1 3.4,1 3,1 2.1,0 2,0 2.5,0 3.2,1 2.9,0 3,1 3.7,1 3,1 3.4,1 2.1,0 3.7,1 2.7,0 2.8,0 2.6,0 3.9,1 3.9,1 3.2,1 2,0 2.9,1 3.6,1 3.8,0 2.4,0 4,1 3.8,1 3.3,1 3.6,1 2.7,1 3.3,1 3.6,1 3.1,0 3.3,0 3.7,1 3.5,1 2.5,0 3.9,1 3.8,1 3.7,1 3.4,1 3.1,1 2.8,0 3.2,1 3.8,1 3.5,1 2.6,1 4,1 2.1,0 2.2,0 3.9,1 4,1 3.3,1 2.1,0 2,0 2.3,0 3.5,0 2.8,0 3.4,1 3.6,1 4,1 3.3,1 3.7,1 2.6,0 2.6,0 3.6,1 3.3,1 3.1,1 2.7,1 2.4,0 3.3,1 3.7,1 2.5,0 3.4,1 3.5,0 3.4,1 2.3,0 3.5,1 2.5,0 3.8,1 2.4,0 3.4,1 4,1 2.1,0 2,0 2.6,1 3.1,0 3.9,1 3.6,1 2.6,0 3,0 2.3,0 3.5,1 3.8,1 3.5,1 2,0 3,1 3.8,1 3,1 2.9,0 2.2,0 2.5,0 3.9,1 2.5,0 3.3,1 4,1 2,0 3.9,1 2.3,0 3.4,1 3.5,1 3.1,1 2.4,1 3.2,1 3.8,1 3.9,1 2.1,0 4,1 3,1 2.1,0 2.4,0 2.7,0 3.3,1 2.5,0 3.6,1 2.3,0 2.1,0 3.6,1 3.5,1 3.2,1 3.2,0 3.3,1 3.6,1 2.6,0 2.9,0 3.9,1 3.6,1 3.9,1 2.4,0 3.2,0 3.3,0 2.2,0 2.8,0 3.8,1 2,0 3,1 2.1,0 2.3,0 2,0 3.4,1 3.7,1 3,0 2.4,0 2.1,0 3.4,0 2.2,0 3.2,1 3.9,1 3.4,1 2.8,1 2,0 2.1,0 2.8,0 3.1,1 3.5,1 3.2,1 3.7,1 3.7,1 2.2,0 3.2,1 3.2,1 2.1,0 3.8,1 2.4,0 2.3,0 3.9,1 3,1 2.1,0 3.8,1 2.8,0 2.1,0 2.2,0 2.9,0 3.1,0 4,1 2.6,0 3,1 2.3,0 3.2,1 3.7,1 3.9,1 3.7,1 3.2,1 2.6,0 3.4,1 3.9,1 2.1,0 4,1 2.8,0 3.2,1 3.5,1 3.1,1 3.5,1 2.8,0 2.4,0 3.6,1 2.5,0 2.2,0 3.5,1 2.4,0 3.9,1 3.1,1 2.4,0 3.1,1 2.9,0 2.1,0 3.6,1 3.2,1 3.7,1 2.8,0 2.8,0 3.2,1 2.9,0 2.1,0 3.4,1 3.9,1 2.6,0 3.2,1 4,1 2.8,1 3.2,1 2.5,0 3,1 3.5,1 2.3,0 3.2,0 2.7,0 2.2,0 3.7,0 3.5,1 3.7,1 2.8,0 2.4,0 2,0 3.5,1 2.2,0 2.2,0 3.3,1 3.4,1 3.9,1 2.2,0 3.7,1 3.5,1 2.7,0 2.8,1 3.1,1 2.5,0 2.6,0 2,0 3.8,1 2.7,0 3.7,1 2.8,0 2.5,0 2.4,0 2.5,0 3.3,1 3.4,1 2.9,1 2.7,1 3.9,1 3.8,1 2.9,1 2.8,1 2.1,0 2.3,0 4,1 2.3,0 3.7,1 3.8,1 3.7,1 3.3,1 3.7,1 2.1,0 3.2,1 2.1,0 3.8,1 2.9,0 3.7,1 2.4,0 2.6,0 3.5,1 2.7,1 2.7,1 2.5,0 2.7,1 2.7,1 3.7,1 2.3,0 3.6,1 2.6,1 2.1,0 3.8,1 2.1,0 2.4,0 2.6,0 2.6,0 2.1,0 3.6,1 2.3,0 3.2,1 2.7,0 3.1,1 2,0 2.8,0 2.6,0 3.1,1 2.8,0 2.5,0 3.6,1 3.6,1 2.8,0 2.5,0 2.7,0 3.5,1 3.6,1 3.3,1 3.8,1 3,0 3.1,1 2.7,0 3.7,1 3.4,1 2,0 3.9,1 3.6,1 2.7,1 2.7,1 3.4,1 2.7,1 2.6,0 ================================================ FILE: Logistic regression in R/script - logistic regression in R.R ================================================ library(tidyverse) theme_set(theme_minimal()) admissions <- read_csv("admissions.csv") View(admissions) ggplot(admissions, aes(x = gpa, y = admitted)) + geom_jitter(height = .05, alpha = .1) model <- glm(admitted ~ gpa, data = admissions, family = "binomial") summary(model) ggplot(admissions, aes(x = gpa, y = admitted)) + geom_jitter(height = .05, alpha = .1) + geom_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE) adm_sum <- admissions %>% group_by(gpa) %>% summarize(prop_adm = mean(admitted), count = n()) adm_sum ggplot(adm_sum, aes(x = gpa, y = prop_adm)) + geom_point() model2 <- glm(prop_adm ~ gpa, family = "binomial", data = adm_sum, weights = count) summary(model2) ggplot(adm_sum, aes(x = gpa, y = prop_adm, weight = count)) + geom_point() + geom_smooth(method = "glm", se = FALSE, method.args = list(family = "binomial")) ================================================ FILE: Maximum likelihood example/README.md ================================================ # Maximum likelihood estimation - example []() Hi everybody! In this folder, you'll find materials supporting my vid, **Maximum likelihood estimation - example**, which you can find at . ================================================ FILE: Multiple linear regression in R/README.md ================================================ # Multiple linear regression in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Multiple linear regression in R**, which you can find at . ================================================ FILE: Multiple linear regression in R/Script - multiple regression in R.R ================================================ # Multiple regression in R library(tidyverse) library(GGally) library(broom) # The data ---------------------------------------------------------------- set.seed(2) x1 <- runif(60, 100, 300) x2 <- runif(60, 20, 120) y <- 20 + 4*x1 - 3*x2 + rnorm(60, 0, 40) df <- tibble(x1, x2, y) new_x1 <- seq(from = 120, to = 300, length.out = 20) new_x2 <- runif(20, 30, 110) new_data <- tibble(x1 = new_x1, x2 = new_x2) # Preliminaries ----------------------------------------------------------- df ggpairs(df) # The model --------------------------------------------------------------- model <- lm(y ~ x1 + x2, data = df) summary(model) plot(model) #for diagnostics # Predictions ------------------------------------------------------------- new_data fitted <- predict(model, new_data) new_data$pred <- fitted new_data ================================================ FILE: Multiple linear regression with interaction in R/README.md ================================================ # Multiple linear regression with interaction in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Multiple linear regression with interaction in R**, which you can find at . ================================================ FILE: Multiple linear regression with interaction in R/Script - multiple linear regression with interaction.R ================================================ library(tidyverse) library(modeldata) theme_set(theme_minimal()) data(penguins) penguins_sm <- filter(penguins, species != "Adelie") glimpse(penguins_sm) ggplot(penguins_sm, aes(x = flipper_length_mm, y = body_mass_g, col = species)) + geom_point() + geom_smooth(method = "lm", se = FALSE) model <- lm(body_mass_g ~ flipper_length_mm * species, data = penguins_sm) summary(model) ggplot(penguins_sm, aes(x = flipper_length_mm, y = body_mass_g, col = species)) + geom_point() + geom_abline(aes(intercept = -3037.196, slope = 34.573, col = "Chinstrap"))+ geom_abline(aes(intercept = -3037.196-3750.085, slope = 34.573 + 20.049, col = "Gentoo")) # A better plot ---------------------------------------------------- penguin_lines <- penguins_sm %>% group_by(species) %>% summarise(minimum = min(flipper_length_mm, na.rm = TRUE), maximum = max(flipper_length_mm, na.rm = TRUE)) %>% pivot_longer(cols = 2:3, names_to = "min_max", values_to = "flipper_length_mm") penguin_lines <- penguin_lines %>% mutate(fitted = predict(model, penguin_lines)) %>% pivot_wider(names_from = min_max, values_from = c(flipper_length_mm, fitted)) ggplot(penguins_sm, aes(flipper_length_mm, body_mass_g, col = species)) + geom_point() + geom_segment(data = penguin_lines, aes(x = flipper_length_mm_minimum, y = fitted_minimum, xend = flipper_length_mm_maximum, yend = fitted_maximum, col = species), size = 1) ================================================ FILE: Multiple regression in R - example/README.md ================================================ # Multiple regression in R: example []() Hi everybody! In this folder, you'll find materials supporting my vid, **Multiple regression in R: example**, which you can find at . The `parenthood` data set comes from Danielle Navarro's excellent book, *Learning Statistics with R*, linked [here](https://learningstatisticswithr.com/). Check it out! ================================================ FILE: Multiple regression in R - example/Script - multiple regression in R - example.R ================================================ library(tidyverse) library(broom) library(GGally) # Download the LSR data sets from https://learningstatisticswithr.com/. # The following command likely won't work on your machine. Replace with the # file's full path or import directly using the RStudio file browser. # load("parenthood.Rdata") parenthood <- select(parenthood, 1:3) glimpse(parenthood) ggpairs(parenthood) model <- lm(dan.grump ~ ., data = parenthood) summary(model) model_baby <- lm(dan.grump ~ baby.sleep, data = parenthood) summary(model_baby) model_dan <- lm(dan.grump ~ dan.sleep, data = parenthood) summary(model_dan) glance(model) glance(model_baby) glance(model_dan) ================================================ FILE: Mutating data frames with case_when/README.md ================================================ # Mutating data frames with case_when []() Hi everybody! In this folder, you'll find materials supporting my vid, **Mutating data frames with case_when**, which you can find at . ================================================ FILE: Mutating data frames with case_when/Script - case_when.R ================================================ # Assigning letter grades using case_when library(tidyverse) gradebook <- read_csv("Mutating data frames with case_when/gradebook.csv") View(gradebook) ?case_when # generalizes ifelse() gradebook_new <- gradebook %>% mutate(grade = case_when(score >= 90 ~ "A", score >= 80 ~ "B", score >= 70 ~ "C", score >= 60 ~ "D", .default = "F")) view(gradebook_new) ================================================ FILE: Mutating data frames with case_when/gradebook.csv ================================================ name,score student 1,80 student 2,66 student 3,72 student 4,75 student 5,74 student 6,71 student 7,77 student 8,49 student 9,66 student 10,84 student 11,99 student 12,89 student 13,95 student 14,62 student 15,18 student 16,83 student 17,96 student 18,75 student 19,71 student 20,68 student 21,87 student 22,83 student 23,77 student 24,85 student 25,77 student 26,83 student 27,45 student 28,82 student 29,78 student 30,80 student 31,80 student 32,83 student 33,96 student 34,93 ================================================ FILE: Nested data frames and multiple models/README.md ================================================ # Nested data frames and multiple models in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Nested data frames and multiple models in R**, which you can find at . ================================================ FILE: Nested data frames and multiple models/Script - multiple models.R ================================================ # Nested data frames, multiple models library(tidymodels) glimpse(penguins) penguins_nested <- penguins |> group_by(species) |> nest() View(penguins_nested) View(penguins_nested[[1]]) penguins_lm <- function(df){ lm(bill_length_mm ~ bill_depth_mm, data = df) } penguins_nested <- penguins_nested |> mutate(model = map(data, penguins_lm), model_tidy = map(model, tidy), model_glance = map(model, glance)) summary(penguins_nested$model[[1]]) View(penguins_nested$model_glance[[1]]) penguins_m <- penguins_nested |> unnest(model_tidy) View(penguins_m) penguins_g <- penguins_nested |> unnest(model_glance) View(penguins_g) # Let's get a plot showing the linear models in the 3 groups. penguins_wide <- penguins_m |> pivot_wider(names_from = term, values_from = estimate:model_glance) View(penguins_wide) ggplot() + geom_point(data = penguins, aes(x = bill_depth_mm, y = bill_length_mm, color = species)) + geom_abline(data = penguins_wide, aes(slope = estimate_bill_depth_mm, intercept = `estimate_(Intercept)`, color = species)) + scale_color_brewer(palette = "Dark2") ================================================ FILE: Normal distribution in R/README.md ================================================ # The normal distribution in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **The normal distribution in R**, which you can find at . ================================================ FILE: Normal distribution in R/Script - normal distribution in R.R ================================================ # The normal distribution in R library(tidyverse) # Problem 1 pnorm(200, 192.9, 7.1) # less than 200 1 - pnorm(200, 192.9, 7.1) # more than 200 # Problem 2 qnorm(.9, 192.9, 7.1) # Problem 3 flippers <- rnorm(400, 192.9, 7.1) qplot(flippers, col = I("black")) # plots will differ slightly due to random variation ================================================ FILE: Not-so-simple linear regression/README.md ================================================ # Not-so-simple linear regression with R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Not-so-simple linear regression with R**, which you can find at . ================================================ FILE: Not-so-simple linear regression/simple linear regression.R ================================================ # Simple linear regression - deep dive library(tidymodels) theme_set(theme_minimal()) set.seed(0) View(airquality) # split data aq_split <- initial_split(airquality) aq_train <- training(aq_split) aq_test <- testing(aq_split) # visualize the data ggplot(aq_train, aes(x = Wind, y = Temp)) + geom_point() + geom_smooth(method = "lm", se = FALSE) # building the model model <- lm(Temp ~ Wind, data = aq_train) names(model) model$coefficients model$residuals model$fitted.values summary(model) fitted.values(model) confint(model, level = .90) plot(model) # the broom package tidy(model) glance(model) aq_aug <- augment(model) View(aq_aug) # model performance predict(model, aq_test, interval = "prediction") sqrt(mean((aq_test$Temp - predict(model, aq_test))^2)) ================================================ FILE: Organizing bar charts by frequency/README.md ================================================ # Arranging ggplot bar charts by frequency []() Hi everybody! In this folder, you'll find materials supporting my vid, **Arranging ggplot bar charts by frequency**, which you can find at . ================================================ FILE: Organizing bar charts by frequency/Script - organizing bar charts by frequency.R ================================================ library(tidyverse) ?fct_infreq glimpse(gss_cat) ggplot(gss_cat, aes(x = marital)) + geom_bar() + theme_minimal() levels(gss_cat$marital) ggplot(gss_cat, aes(x = fct_infreq(marital), fill = fct_infreq(marital))) + geom_bar() + labs(x = "Marital status") + scale_fill_brewer(palette = "Set2") + theme_minimal() + theme(legend.position = "none") ================================================ FILE: Overfitting in machine learning/README.md ================================================ # Overfitting in machine learning []() Hi everybody! In this folder, you'll find materials supporting my vid, **Overfitting in machine learning**, which you can find at . ================================================ FILE: Overfitting in machine learning/overfitting demonstration.R ================================================ # Overfitting demonstration library(tidyverse) # Create the data --------------------------------------------------------- set.seed(1) x <- runif(1000, 0, 10) y <- 6 - .5 * x + rnorm(1000, sd = 2) df <- data.frame(x, y) set.seed(0) df_sample <- df %>% slice_sample(n = 25) # Visualization ----------------------------------------------------------- ggplot(df, aes(x, y)) + geom_point(color = "lightblue") + geom_abline(slope = -.5, intercept = 6, color = "blue", linewidth = 1) ggplot(df, aes(x, y)) + geom_point(color = "lightblue") + geom_abline(slope = -.5, intercept = 6, color = "blue", linewidth = 1) + geom_point(data = df_sample, color = "black") + geom_smooth(data = df_sample, se = FALSE, color = "black") ggplot(df, aes(x, y)) + geom_point(color = "lightblue") + geom_abline(slope = -.5, intercept = 6, color = "blue", linewidth = 1) + geom_point(data = df_sample, color = "black") + geom_smooth(data = df_sample, se = FALSE, method = "lm", color = "black") # Model building ---------------------------------------------------------- model_linear <- lm(y ~ x, data = df_sample) model_loess <- loess(y ~ x, data = df_sample) summary(model_linear) summary(model_loess) # Model evaluation -------------------------------------------------------- df_resid <- df %>% mutate(linear_resid = df$y - predict(model_linear, df), loess_resid = df$y - predict(model_loess, df)) %>% drop_na() View(df_resid) rss_linear <- sum(df_resid$linear_resid^2) rss_loess <- sum(df_resid$loess_resid^2) rss_linear rss_loess ================================================ FILE: Percentiles in R/README.md ================================================ # Percentiles and quantiles in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Percentiles and quantiles in R**, which you can find at . ================================================ FILE: Percentiles in R/script - percentiles.R ================================================ library(tidyverse) ggplot(faithful, aes(x = waiting)) + geom_histogram(color = "black") + labs(x = "Waiting time") quantile(faithful$waiting, .35) quantile(faithful$waiting, c(.35, .70, .95)) summary(faithful$waiting) ecdf(faithful$waiting)(79) ================================================ FILE: Percentiles of continuous distributions/README.md ================================================ # Percentiles of continuous distributions []() Hi everybody! In this folder, you'll find materials supporting my vid, **Percentiles of continuous distributions**, which you can find at . ================================================ FILE: Pie charts with R/README.md ================================================ # Pie charts with R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Pie charts with R**, which you can find at . ================================================ FILE: Pie charts with R/pie charts.R ================================================ # Pie charts in R library(tidyverse) library(modeldata) View(penguins) # Bar chart for comparison ggplot(penguins, aes(x = species, fill = species)) + geom_bar(show.legend = FALSE) + scale_fill_brewer(palette = "Dark2") + labs(x = "Species", y = NULL) + theme_minimal() # Obtain counts for penguin species pen_sum <- penguins %>% count(species) pen_sum # A stacked bar chart ggplot(pen_sum, aes(x = "", y = n, fill = species)) + geom_col() + scale_fill_brewer(palette = "Dark2") + labs(fill = "Species", x = NULL, y = NULL) + theme_minimal() # A basic pie chart ggplot(pen_sum, aes(x = "", y = n, fill = species)) + geom_col() + coord_polar("y") + scale_fill_brewer(palette = "Dark2") + labs(fill = "Species", x = NULL, y = NULL) + theme_void() # Adding labels pen_sum <- penguins %>% count(species) %>% arrange(desc(species)) %>% mutate(frac = round(n / sum(n), 2), percent = paste0(frac * 100, "%"), ypos = cumsum(n) - .5*n) pen_sum ggplot(pen_sum, aes(x = "", y = n, fill = species)) + geom_col() + geom_text(aes(label = percent, y = ypos)) + scale_fill_brewer(palette = "Dark2") + labs(fill = "Species") + theme_void() ggplot(pen_sum, aes(x = "", y = n, fill = species)) + geom_col() + geom_text(aes(label = percent, y = ypos)) + coord_polar("y") + scale_fill_brewer(palette = "Dark2") + labs(fill = "Species") + theme_void() ================================================ FILE: Poisson regression/README.md ================================================ # Poisson regression []() Hi everybody! In this folder, you'll find materials supporting my vid, **Poisson regression**, which you can find at . ================================================ FILE: Poisson regression in R/README.md ================================================ # Poisson regression in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Poisson regression in R**, which you can find at . ================================================ FILE: Poisson regression in R/script - poisson in R.R ================================================ library(tidyverse) library(ISLR2) theme_set(theme_minimal()) ?Bikeshare glimpse(Bikeshare) ggplot(Bikeshare, aes(y = bikers, x = temp)) + geom_point(alpha = .1) + facet_wrap(~weathersit) ggplot(Bikeshare, aes(y = bikers, x = temp)) + geom_point(alpha = .1) + facet_wrap(~workingday) model <- glm(bikers ~ temp + workingday + weathersit, data = Bikeshare, family = "poisson") summary(model) ggplot(Bikeshare, aes(y = bikers, x = temp, color = weathersit)) + geom_point(alpha = .05) + geom_smooth(method = "glm", se = FALSE, method.args = list(family = "poisson")) + facet_wrap(~workingday) + scale_color_brewer(palette = "Dark2") 365 * 24 # hours in a year. ================================================ FILE: Prediction intervals for linear models/README.md ================================================ # Prediction intervals for linear models in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Prediction intervals for linear models in R**, which you can find at . ================================================ FILE: Prediction intervals for linear models/Script - prediction intervals.R ================================================ # Prediction intervals for linear models library(tidyverse) library(modeldata) ?predict data(penguins) adelie <- penguins %>% filter(species == "Adelie", !is.na(bill_length_mm)) View(adelie) ggplot(adelie, aes(x = bill_depth_mm, y = bill_length_mm)) + geom_point() + geom_smooth(method = "lm", level = .99) model <- lm(bill_length_mm ~ bill_depth_mm, data = adelie) plot(model) adelie_pred <- predict(model, interval = "prediction") adelie_new <- cbind(adelie, adelie_pred) View(adelie_new) ggplot(adelie_new, aes(x = bill_depth_mm)) + geom_point(aes(y = bill_length_mm)) + geom_line(aes(y = fit), col = "blue", size = .8) + geom_line(aes(y = upr), linetype = "dashed", col = "blue", size = .8) + geom_line(aes(y = lwr), linetype = "dashed", col = "blue", size = .8) # note 'linewidth' is now used instead of 'size' adelie_pred <- predict(model, interval = "prediction", level = .8) adelie_pred <- cbind(adelie, adelie_pred) augment(model) ================================================ FILE: R Markdown/R Markdown practice.Rmd ================================================ --- title: "RMarkdown practice" author: "Andrew Gard" date: "`r Sys.Date()`" output: html_document --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) library(tidyverse) library(palmerpenguins) library(knitr) ``` # Introduction Hi everybody! This is an RMarkdown document. You can do *italics* and **bold**, and include a [link](https://www.youtube.com/c/EquitableEquations). # R Code ```{r our first chunk, eval=FALSE} values <- rnorm(5) values ``` We can also use echo to show or not show the code and results to show or not show the output. # More text tools ## subheadings Unordered lists: - first item - second item Ordered lists: 1. first 2. second We can insert an image like this: ![alt text](rusty_logo.png){width="20%"} We can add citations^[footnotes] We can use math mode $\alpha \beta$ and so on. Finally, we can make nice tables. ```{r} penguins_sm <- head(penguins) kable(penguins_sm) # from the knitr package ``` See the RMarkdown cheat sheet and reference guide (help -> cheat sheets) for more! ================================================ FILE: R Markdown/R-Markdown-practice.html ================================================ RMarkdown practice

Introduction

Hi everybody! This is an RMarkdown document. You can do italics and bold, and include a link.

R Code

values <- rnorm(5)
values

We can also use echo to show or not show the code and results to show or not show the output.

More text tools

subheadings

Unordered lists:

  • first item

  • second item

Ordered lists:

  1. first

  2. second

We can insert an image like this: alt text

We can add citations1

We can use math mode \(\alpha \beta\) and so on.

Finally, we can make nice tables.

penguins_sm <- head(penguins)
kable(penguins_sm) # from the knitr package
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year
Adelie Torgersen 39.1 18.7 181 3750 male 2007
Adelie Torgersen 39.5 17.4 186 3800 female 2007
Adelie Torgersen 40.3 18.0 195 3250 female 2007
Adelie Torgersen NA NA NA NA NA 2007
Adelie Torgersen 36.7 19.3 193 3450 female 2007
Adelie Torgersen 39.3 20.6 190 3650 male 2007

See the RMarkdown cheat sheet and reference guide (help -> cheat sheets) for more!


  1. footnotes↩︎

================================================ FILE: R Markdown/README.md ================================================ # What is R Markdown? []() Hi everybody! In this folder, you'll find materials supporting my vid, **What is R Markdown?**, which you can find at . ================================================ FILE: README.md ================================================ # Equitable equations on YouTube []() Hi everybody! In this repo, you'll find files to supplement the vids on my YouTube channel, www.youtube.com/c/EquitableEquations, where I usually post new content every second Monday. I'm working to document older vids as well, but this will take time. Thanks for visiting! ================================================ FILE: Regression analysis - backward selection/README.md ================================================ # Regression analysis in R: backward selection []() Hi everybody! In this folder, you'll find materials supporting my vid, **Regression analysis in R: backward selection**, which you can find at . ================================================ FILE: Regression analysis - backward selection/Slides - bss.R ================================================ library(tidyverse) library(broom) library(GGally) # Data from Regression Analysis by Example # by Chatterjee and Hadi (set P060) performance <- read_csv("performance.csv") View(performance) ggpairs(performance) # I'll use the t-statistic to decide which # variable to throw away at each step. # I'll keep going as long as I have a t-statistic # under 1. model_6 <- lm(overall_rating ~ ., data = performance) summary(model_6) model_5 <- update(model_6, . ~ . -not_overly_critical) summary(model_5) model_4 <- update(model_5, . ~ . - raises_for_performance) summary(model_4) model_3 <- update(model_4, . ~ . -no_special_privileges) summary(model_3) # residual plot perf_aug <- augment(model_3) View(perf_aug) ggplot(perf_aug, aes(x = .fitted, y = .resid)) + geom_point() + geom_hline(yintercept = 0) # How does AIC compare between these models? model_list <- list(model_6, model_5, model_4, model_3) lapply(model_list, extractAIC) ================================================ FILE: Regression analysis - backward selection/performance.csv ================================================ overall_rating,handles_employee_complaints,no_special_privileges,space_for_learning,raises_for_performance,not_overly_critical,rate_of_advancement 43,51,30,39,61,92,45 63,64,51,54,63,73,47 71,70,68,69,76,86,48 61,63,45,47,54,84,35 81,78,56,66,71,83,47 43,55,49,44,54,49,34 58,67,42,56,66,68,35 71,75,50,55,70,66,41 72,82,72,67,71,83,31 67,61,45,47,62,80,41 64,53,53,58,58,67,34 67,60,47,39,59,74,41 69,62,57,42,55,63,25 68,83,83,45,59,77,35 77,77,54,72,79,77,46 81,90,50,72,60,54,36 74,85,64,69,79,79,63 65,60,65,75,55,80,60 65,70,46,57,75,85,46 50,58,68,54,64,78,52 50,40,33,34,43,64,33 64,61,52,62,66,80,41 53,66,52,50,63,80,37 40,37,42,58,50,57,49 63,54,42,48,66,75,33 66,77,66,63,88,76,72 78,75,58,74,80,78,49 48,57,44,45,51,83,38 85,85,71,71,77,74,55 82,82,39,59,64,78,39 ================================================ FILE: Repositioning ggplot legends/README.md ================================================ # Repositioning ggplot legends in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Repositioning ggplot legends in R**, which you can find at . ================================================ FILE: Repositioning ggplot legends/Script - repositioning ggplot legends.R ================================================ library(tidyverse) theme_set(theme_minimal()) ggplot(diamonds, aes(x = cut, fill = cut)) + geom_bar() + theme(legend.position = "top") ggplot(diamonds, aes(x = cut, fill = cut)) + geom_bar() + theme(legend.position = "none") ggplot(diamonds, aes(x = cut, fill = cut)) + geom_bar() + theme(legend.position = c(0, 1), legend.justification = c(0, 1)) ================================================ FILE: Return of the starwars data set/README.md ================================================ # Return of the starwars data set []() Hi everybody! In this folder, you'll find materials supporting my vid, **Return of the starwars data set**, which you can find at . ================================================ FILE: Return of the starwars data set/script - starwars.R ================================================ # Unnesting Starwars library(tidyverse) theme_set(theme_minimal()) View(starwars) glimpse(starwars) starwars_sm <- starwars %>% select(name, films, vehicles, starships) sw_films <- starwars_sm %>% unnest(films) View(sw_films) sw_films %>% count(name) %>% arrange(-n) sw_films %>% count(name) %>% filter(n >= 4) %>% mutate(name = fct_reorder(name, n)) %>% ggplot(aes(y = name, x = n)) + geom_col() ?unnest sw_ships <- starwars_sm %>% unnest(starships, keep_empty = TRUE) View(sw_ships) sw_long <- starwars_sm %>% unnest(c(starships, vehicles)) # error, vectors aren't the same length sw_long <- starwars_sm %>% unnest(starships) %>% unnest(vehicles) View(sw_long) ================================================ FILE: Scatterplots and regression lines in R/README.md ================================================ # Scatterplots and regression lines in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Scatterplots and regression lines in R**, which you can find at . ================================================ FILE: Scatterplots and regression lines in R/Script - scatterplots and regression lines.R ================================================ # scatterplots in R library(tidyverse) library(modeldata) View(penguins) ggplot(penguins, aes(x = flipper_length_mm, y = bill_length_mm)) + geom_point(size = 2, color = "red", shape = "square", alpha = .5) + geom_smooth(method = "lm", se = FALSE, color = "pink") # not ideal color choices ggplot(penguins, aes(x = flipper_length_mm, y = bill_length_mm)) + geom_point() + geom_smooth(method = "lm", se = FALSE) lm(bill_length_mm ~ flipper_length_mm, data = penguins) ggplot(penguins, aes(x = flipper_length_mm, y = bill_length_mm, color = island)) + geom_point() + scale_color_brewer(palette = "Dark2") ggplot(penguins, aes(x = flipper_length_mm, y = bill_length_mm, color = species)) + geom_point() + scale_color_brewer(palette = "Dark2") table(penguins$species, penguins$island) ggplot(penguins, aes(x = flipper_length_mm, y = bill_length_mm, color = species)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + scale_color_brewer(palette = "Dark2") ggplot(penguins, aes(x = flipper_length_mm, y = bill_length_mm, color = species)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + scale_color_brewer(palette = "Dark2") + labs(x = "Flipper length", y = "Bill length", color = "Species", title = "Penguin measurements") + theme_minimal() ================================================ FILE: Sensitivity, specificity, precision, recall/README.md ================================================ # Sensitivity, specificity, precision, recall []() Hi everybody! In this folder, you'll find materials supporting my vid, **Sensitivity, specificity, precision, recall**, which you can find at . ================================================ FILE: Simple linear regression with R (intro)/README.md ================================================ # Simple linear regression with R (introductory) []() Hi everybody! In this folder, you'll find materials supporting my vid, **Simple linear regression with R (introductory)**, which you can find at . ================================================ FILE: Simpson's paradox/README.md ================================================ # Simpson's paradox []() Hi everybody! In this folder, you'll find materials supporting my vid, **Simpson's paradox**, which you can find at . ================================================ FILE: Simpson's paradox/batting.csv ================================================ year,average,group 1969,0.292,A 1965,0.28,A 1970,0.284,A 1969,0.288,A 1967,0.279,A 1961,0.286,A 1963,0.276,A 1965,0.295,A 1966,0.282,A 1973,0.3,A 1968,0.284,A 1963,0.278,A 1962,0.284,A 1965,0.285,A 1965,0.275,A 1964,0.291,A 1966,0.279,A 1963,0.286,A 1967,0.289,A 1962,0.284,A 1965,0.284,A 1967,0.287,A 1966,0.279,A 1968,0.282,A 1965,0.279,A 1967,0.296,A 1969,0.296,A 1963,0.286,A 1962,0.276,A 1966,0.285,A 1966,0.28,B 1965,0.268,B 1966,0.275,B 1965,0.264,B 1969,0.277,B 1971,0.268,B 1970,0.266,B 1966,0.265,B 1971,0.268,B 1966,0.266,B 1972,0.279,B 1969,0.273,B 1966,0.269,B 1965,0.263,B 1963,0.263,B 1964,0.265,B 1962,0.262,B 1971,0.271,B 1970,0.276,B 1966,0.264,B 1968,0.281,B 1966,0.263,B 1975,0.275,B 1965,0.284,B 1967,0.277,B 1968,0.27,B 1969,0.267,B 1967,0.275,B 1960,0.267,B 1963,0.267,B 1975,0.27,C 1973,0.262,C 1969,0.287,C 1973,0.281,C 1969,0.271,C 1974,0.273,C 1967,0.257,C 1975,0.275,C 1974,0.264,C 1974,0.257,C 1973,0.283,C 1974,0.258,C 1970,0.262,C 1973,0.26,C 1976,0.259,C 1978,0.274,C 1974,0.253,C 1973,0.264,C 1969,0.259,C 1967,0.25,C 1970,0.263,C 1979,0.266,C 1977,0.263,C 1972,0.274,C 1971,0.27,C 1971,0.264,C 1978,0.27,C 1972,0.259,C 1979,0.268,C 1976,0.278,C 1979,0.269,C 1969,0.265,C 1973,0.284,C 1969,0.257,C 1976,0.276,C 1974,0.282,C 1972,0.256,C 1980,0.27,C 1974,0.263,C 1978,0.264,C ================================================ FILE: Simpson's paradox/script - simpsons paradox.R ================================================ # Simulate the data ------------------------------------------------------- # (or download from GitHub and load directly) set.seed(0) x <- c(rnorm(30, 65, 10), rnorm(30, 70, 10), rnorm(40, 90, 15)) y <- c(rnorm(30, 75, 10), rnorm(30, 50, 10), rnorm(40, 35, 15)) + .3 * x group <- c(rep("A", 30), rep("B", 30), rep("C", 40)) xnew <- round(((x - 47) / (112 - 47)) * 20 + 1960) ynew <- round(((y - 35) / (119 - 35)) * 50 + 250) / 1000 batting <- data.frame(year = xnew, average = ynew, group) # Simpson's paradox ------------------------------------------------------- library(tidyverse) View(batting) ggplot(batting, aes(x = year, y = average)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + scale_y_continuous(labels = scales::label_number(accuracy = .001)) + theme_minimal() ggplot(batting, aes(x = year, y = average, color = group)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + scale_y_continuous(labels = scales::label_number(accuracy = .001)) + scale_color_brewer(palette = "Dark2") + theme_minimal() # Common example ---------------------------------------------------------- ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) + geom_point() + geom_smooth(method = "lm", se = FALSE) ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length, color = Species)) + geom_point() + scale_color_brewer(palette = "Dark2") + geom_smooth(method = "lm", se = FALSE) ================================================ FILE: Splitting columns in R with separate()/README.md ================================================ # Splitting columns in R with separate() []() Hi everybody! In this folder, you'll find materials supporting my vid, **Splitting columns in R with separate()**, which you can find at . ================================================ FILE: Splitting columns in R with separate()/script - splitting columns with separate.R ================================================ # Notes for separate script library(tidyverse) ?separate View(smiths) separate(smiths, col = subject, into = c("first", "last")) separate(smiths, col = subject, into = c("first", "last"), remove = FALSE) separate(smiths, col = subject, into = c("first", "last"), sep = " ") separate(smiths, col = subject, into = c("first", NA)) separate(smiths, col = height, into = c("m", "cm"), convert = TRUE) ================================================ FILE: Splitting data frames with slice()/README.md ================================================ # Splitting data frames in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Splitting data frames in R**, which you can find at . ================================================ FILE: Splitting data frames with slice()/Script - splitting data sets.R ================================================ # Slicing a data set library(tidyverse) ?slice starwars slice(starwars, 4:8) # only keep rows 4-8 slice(starwars, c(-4, -5)) # omit rows 4 and 5 slice_tail(starwars, n = 4) # keep the last 4 rows slice_tail(starwars, prop = .20) # keep the last 20% of rows starwars %>% slice_max(order_by = mass, n = 4) # keep the row with top 4 values of mass starwars %>% slice_max(order_by = mass, n = 4, with_ties = FALSE) # gives exactly 4 rows despite ties test <- starwars %>% slice_sample(prop = .20) # keep 20% at random test training <- starwars %>% anti_join(test) training ================================================ FILE: Statistical power and sample size/README.md ================================================ # Statistical power and sample size []() Hi everybody! In this folder, you'll find materials supporting my vid, **Statistical power and sample size**, which you can find at . ================================================ FILE: Teaching an AI to webscrape/README.md ================================================ # Teaching an AI to webscrape using the ellmer package []() Hi everybody! In this folder, you'll find materials supporting my vid, **Teaching an AI to webscrape using the ellmer package**, which you can find at . ================================================ FILE: Teaching an AI to webscrape/ellmer tools.R ================================================ # tool calling with Claude library(tidyverse) library(ellmer) library(rvest) top_movie <- function(){ url <- "https://www.boxofficemojo.com/daily/2025/?view=year" top_movie_df <- read_html(url) %>% html_table() %>% pluck(1) %>% slice_head(n = 1) top_movie_df } top_movie() top_movie_newest <- tool( .fun = top_movie, .name = "top_movie", .description = "Returns the most recently recorded top movie of the day as listed on boxofficemojo.com." ) chat <- chat_anthropic(system_prompt = "you are a terse R assistant") chat$register_tool(top_movie_newest) chat$chat("what is the most recent top movie?") chat$chat("what was the top movie on christmas of 2022?") top_movies_year <- function(year){ url <- paste0("https://www.boxofficemojo.com/daily/", year) top_movie_df <- read_html(url) %>% html_table() %>% pluck(1) %>% janitor::clean_names() top_movie_df } df <- top_movies_year(2023) glimpse(df) top_movies_year <- tool( .fun = top_movies_year, .name = "top_movies_year", .description = "Returns the top-grossing movies by day for the specified year. Data from boxofficemojo.com.", year = type_integer("the year of the date requested") ) chat$register_tool(top_movies_year) chat$chat("what was the top movie on christmas of 2022?") chat$chat("how long was it the top-grossing movie?") chat$chat("also look at 2023") chat$chat("give R code to create a single data set showing this movie's performance") chat$chat("the code should download the data and combine the sets, not create the data from scratch") chat$get_cost() ================================================ FILE: The poisson distribution/README.md ================================================ # The poisson distribution []() Hi everybody! In this folder, you'll find materials supporting my vid, **The poisson distribution**, which you can find at . ================================================ FILE: Tidy data/README.md ================================================ # What is tidy data? []() Hi everybody! In this folder, you'll find materials supporting my vid, **What is Tidy data?**, which you can find at . ================================================ FILE: Tidy tuesday analysis - Ravelry yarn/README.md ================================================ # Tidy Tuesday analysis: Ravelry yarn []() Hi everybody! In this folder, you'll find materials supporting my vid, **Tidy Tuesday analysis: Ravelry yarn**, which you can find at . ================================================ FILE: Tidy tuesday analysis - Ravelry yarn/yarn script.R ================================================ library(tidyverse) library(tidytuesdayR) theme_set(theme_minimal()) tuesdata <- tidytuesdayR::tt_load(2022, week = 41) yarn <- tuesdata$yarn View(yarn) # How are NAs distributed? mean(is.na(yarn$max_gauge)) yarn_na_counts <- yarn |> summarize(across(everything(), \(x) mean(is.na(x)))) View(yarn_na_counts) # Big idea: can we impute missing NA values for # min_gauge using grams and yardage? # some weirdness: summary(yarn$yardage) # Note the min. weird <- filter(yarn, yardage == 0) View(weird) # Let's replace Kmart Sayelle's yardage with 240 yarn[yarn$permalink == "kmart-sayelle", "yardage"] <- 240 # There are also zeros for grams. # For brevity, we're going to just filter these out. yarn_sm <- yarn |> filter(grams > 0, yardage > 0) |> mutate(dens = grams / yardage, gauge_std = min_gauge / gauge_divisor) View(yarn_sm) # How do dens and gauge_std relate in this smaller set? ggplot(yarn_sm, aes(x = log10(dens), y = log10(gauge_std))) + geom_point(alpha = .1) # let's remove the zeroes from gauge_std as well. yarn_sm <- yarn_sm |> filter(gauge_std > 0) ggplot(yarn_sm, aes(x = log10(dens), y = log10(gauge_std))) + geom_point(alpha = .1) + geom_smooth(method = "lm") # Let's get the actual model now: model <- lm(log10(gauge_std) ~ log10(dens), data = yarn_sm) summary(model) # The model says that # gauge_std = 10 ^ (.495 - .514 * log10(dens) + error) yarn_new <- yarn |> mutate(gauge_std_imputed = 10 ^ (.495 - .514 * log10(grams / yardage))) # Note there are some problematics values here. Zeros and infinities. ggplot(yarn_new, aes(x = log10(min_gauge / gauge_divisor), y = log10(gauge_std_imputed))) + geom_point(alpha = .1) ================================================ FILE: Tidying data with pivot_longer/README.md ================================================ # Tidying data with pivot_longer []() Hi everybody! In this folder, you'll find materials supporting my vid, **Tidying data with pivot_longer**, which you can find at . ================================================ FILE: Tidying data with pivot_longer/Script - pivot_longer.R ================================================ # pivot_longer library(tidyverse) Body_temps <- read_excel("03 - Body Temperatures.xlsx") # read in data ?pivot_longer temps <- pivot_longer(Body_temps, cols = 3:6, names_to = "Observation", values_to = "Temperature") View(temps) # using starts_with to select columns temps <- pivot_longer(Body_temps, cols = starts_with("Day"), names_to = "Observation", values_to = "Temperature") View(temps) # drop rows without temperature observations temps <- pivot_longer(Body_temps, cols = starts_with("Day"), names_to = "Observation", values_to = "Temperature", values_drop_na = TRUE) ggplot(temps, aes(x = Observation, y = Temperature, color = Observation)) + geom_boxplot() # breaking up the Observation columns temps <- pivot_longer(Body_temps, cols = starts_with("Day"), names_to = c("Day", "Time"), names_sep = "-", values_to = "Temperature", values_drop_na = TRUE) View(temps) ggplot(temps, aes(x = "", y = Temperature)) + geom_boxplot() + facet_grid(Day ~ Time) + labs(x = "") ================================================ FILE: Tidying data with pivot_wider/FQA.csv ================================================ variable,value Assessment,Coyne Plot 4 Date,1/1/12 Site,Coyne Prairie FQA DB Region:,Missouri FQA DB Publication Year:,2015 Practitioner:,Justin Thomas Private/Public:,Public Total Mean C:,4.2 Native Mean C:,4.3 Total FQI:,38.5 Native FQI:,38.7 Adjusted FQI:,42.2 % C value 0:,7.1 % C value 1-3:,31 % C value 4-6:,50 % C value 7-10:,11.9 Native Tree Mean C:,4 Native Shrub Mean C:,3.5 Native Herbaceous Mean C:,4.4 Total Species:,84 Native Species:,81 Non-native Species:,3 Mean Wetness:,2.7 Native Mean Wetness:,2.7 Tree:,1 Shrub:,2 Vine:,0 Forb:,47 Grass:,26 Sedge:,8 Rush:,0 Fern:,0 Bryophyte:,0 Annual:,17 Perennial:,66 Biennial:,1 Native Annual:,17 Native Perennial:,64 ================================================ FILE: Tidying data with pivot_wider/README.md ================================================ # Tidying data in R with pivot_wider []() Hi everybody! In this folder, you'll find materials supporting my vid, **Tidying data in R with pivot_wider**, which you can find at . ================================================ FILE: Tidying data with pivot_wider/Script - pivot_wider.R ================================================ # tidying data with pivot_wider library(tidyverse) ?pivot_wider FQA <- read_csv("FQA.csv") View(FQA) FQA_wide <- pivot_wider(FQA, names_from = variable, values_from = value) library(GLMsData) data(blocks) blocks_wide <- blocks %>% pivot_wider(names_from = Shape, values_from = c(Number, Time)) View(blocks_wide) blocks_wide <- blocks_wide %>% mutate(Difference = Number_Cube - Number_Cylinder) ggplot(blocks_wide, aes(Difference)) + geom_histogram(binwidth = 1, color = "black") + theme_minimal() blocks_wide <- blocks %>% pivot_wider(names_from = c(Trial, Shape), values_from = c(Number, Time)) View(blocks_wide) blocks_wide <- blocks %>% pivot_wider(names_from = c(Trial, Shape), values_from = c(Number, Time), names_glue = "Trial.{Trial}_{Shape}_{.value}") ================================================ FILE: Type I and type II errors/README.md ================================================ # Type I and type II errors in significance tests []() Hi everybody! In this folder, you'll find materials supporting my vid, **Type I and type II errors in significance tests**, which you can find at . ================================================ FILE: Understand ANOVA in 8 minutes/README.md ================================================ # Understand ANOVA in 8 minutes []() Hi everybody! In this folder, you'll find materials supporting my vid, **Understand ANOVA in 8 minutes**, which you can find at . ================================================ FILE: Understanding R functions/README.md ================================================ # Understanding the structure of R functions []() Hi everybody! In this folder, you'll find materials supporting my vid, **Understanding the structure of R functions**, which you can find at . ================================================ FILE: Understanding R functions/script - undedrstanding R functions.R ================================================ # understanding R functions # from last vid: keep_top_spec <- function(vals, cutoff = mean(vals)) { # returns only elements of vals above cutoff vals[vals > cutoff] } formals(keep_top_spec) body(keep_top_spec) View(keep_top_spec) View(which) body(which) ?which body(is.na) typeof(is.na) typeof(keep_top_spec) typeof(which) just_y <- function(){ y <- 4 y } just_y() y y <- 9 just_y() y simpler_y <- function(){ y } simpler_y() y <- 10 simpler_y() add_one <- function(){ if (!exists("u")){ u <- 0 } else { u <- u + 1 } u } add_one() ================================================ FILE: Understanding geom_smooth/README.md ================================================ # Understanding geom_smooth's default loess method []() Hi everybody! In this folder, you'll find materials supporting my vid, **Understanding geom_smooth's default loess method**, which you can find at . ================================================ FILE: Understanding geom_smooth/script - geom_smooth.R ================================================ # Understanding geom_smooth library(tidyverse) library(broom) theme_set(theme_minimal()) ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + geom_smooth(se = FALSE) ?loess cars_model <- loess(mpg ~ wt, data = mtcars, span = .5) summary(cars_model) mt_aug <- augment(cars_model) View(mt_aug) ggplot(mt_aug) + geom_point(aes(x = wt, y = mpg)) + geom_line(aes(x = wt, y = .fitted)) ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + geom_smooth(se = FALSE, span = 10000) ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + geom_smooth(se = FALSE, method = "lm", formula = y ~ poly(x, 2)) ================================================ FILE: Understanding the chi-squared distribution/README.md ================================================ # Understanding the chi-squared distribution []() Hi everybody! In this folder, you'll find materials supporting my vid, **Understanding the chi-squared distribution**, which you can find at . ================================================ FILE: Uniform distribution/README.md ================================================ # The uniform distribution []() Hi everybody! In this folder, you'll find materials supporting my vid, **The uniform distribution**, which you can find at . ================================================ FILE: Using Quarto with R and Python/Quarto demo.qmd ================================================ --- title: "Quarto demo" author: "Andrew Gard" date: "25 Jan 2024" format: html: theme: lux toc: true toc-title: "It's my thing!" fig-align: left pdf: default editor: visual editor_options: chunk_output_type: console execute: echo: true --- ## Quarto Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see . We can do *italics*, bulleted lists - first - second and many other things. ![My logo](rusty_logo.png){fig-alt="A chi-squared distribution with rusty colors" fig-align="left" width="262"} ## Running Code When you click the **Render** button a document will be generated that includes both content and the output of embedded code. You can embed code like this: ```{r} #| label: load packages #| echo: true #| output: false library(tidyverse) ``` ## Include a plot ```{r} #| label: fig-diamonds #| fig-cap: "A bar chart of diamond cuts" #| fig-alt: | #| "more descriptive stuff here" #| out-width: 50% #| code-fold: true ggplot(diamonds, aes(x = cut)) + geom_bar() ``` ## Using LaTeX We can put formulas inline like this: $\alpha$ We indent like this $$ \pi \in \mathbb{R}$$ Google for more info and specific symbols. ## Using python ```{python} x, y = 4, 7 mtcars_py = r.mtcars print(mtcars_py) ``` ```{r} library(reticulate) library(gt) mtcars_new <- py$mtcars_py head(mtcars_new) %>% gt() ``` ================================================ FILE: Using Quarto with R and Python/README.md ================================================ # Using Quarto with R and Python []() Hi everybody! In this folder, you'll find materials supporting my vid, **Using Quarto with R and Python**, which you can find at . ================================================ FILE: What are order statistics?/README.md ================================================ # What are order statistics? []() Hi everybody! In this folder, you'll find materials supporting my vid, **What are order statistics?**, which you can find at . ================================================ FILE: What is Anscombe's quartet?/README.md ================================================ # What is Anscombe's quartet? []() Hi everybody! In this folder, you'll find materials supporting my vid, **What is Anscombe's quartet?** which you can find at . ================================================ FILE: What is Anscombe's quartet?/Script - Anscombe.R ================================================ # The Anscombe quartet library(tidyverse) theme_set(theme_minimal()) View(anscombe) # working column-wise: sapply(anscombe, sd) summarize(anscombe, across(everything(), sd)) # plotting the first set: ggplot(anscombe, aes(x = x1, y = y1)) + geom_point() + geom_smooth(method = "lm", se = FALSE) # pivoting: # note: a similar command is also found in the pivot_longer help file. longer <- anscombe |> pivot_longer(cols = everything(), names_pattern = "(.)(.)", names_to = c(".value", "set") ) view(longer) # plots and summary stats ggplot(longer, aes(x = x, y = y, color = set)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + facet_wrap(~set) + scale_color_brewer(palette = "Dark2") longer |> group_by(set) |> summarize(mean_x = mean(x), mean_y = mean(y), sd_x = sd(x), sd_y = sd(y), cor = cor(x, y)) ================================================ FILE: What is quarto?/README.md ================================================ # What is Quarto? []() Hi everybody! In this folder, you'll find materials supporting my vid, **What is Quarto?**, which you can find at . ================================================ FILE: What is quarto?/what is quarto.qmd ================================================ --- title: "Getting started with Quarto" format: html editor: visual --- ## Quarto Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see . Hi everybody! ## Running Code When you click the **Render** button a document will be generated that includes both content and the output of embedded code. You can embed code like this: ```{r} 1 + 1 ``` You can add options to executable code like this ```{r} #| echo: false 2 * 2 ``` The `echo: false` option disables the printing of code (only output is displayed). We can make our own code chunks with the green "c" button: ```{r} library(tidyverse) library(readxl) erykah <- read_excel("erykah.xlsx") glimpse(erykah) ``` A few Quarto best-practices: - don't include interactive commands like `View` and `install.packages` into quarto docs. - Always make your docs self-contained. ================================================ FILE: What is the central limit theorem?/README.md ================================================ # What is the central limit theorem? []() Hi everybody! In this folder, you'll find materials supporting my vid, **What is the central limit theorem?**, which you can find at . ================================================ FILE: Working with lists in R/README.md ================================================ # Working with lists in R []() Hi everybody! In this folder, you'll find materials supporting my vid, **Lists in R**, which you can find at . ================================================ FILE: Working with lists in R/Script - lists in R.R ================================================ # Lists in R -------------------------------------------------------------- library(tidyverse) nums <- 2:6 words <- "hello world!" logicals <- c(TRUE, FALSE) l1 <- list(nums, words, logicals) l1 str(l1) l1[1] str(l1[1]) l1[[1]] l2 <- list(a = 1:10, b = "hi", c = letters) l2 l2$a l3 <- list(letters, l1, msleep) str(l3) mammals_list <- msleep %>% group_by(vore) %>% group_split() str(mammals_list) ================================================ FILE: Write your own R functions/README.md ================================================ # Write your own R functions []() Hi everybody! In this folder, you'll find materials supporting my vid, **Write your own R functions**, which you can find at . ================================================ FILE: Write your own R functions/Script - functions.R ================================================ # User-defined functions library(modeldata) View(penguins) # A basic example keep_top <- function(values){ values[values > mean(values, na.rm = TRUE)] } keep_top(penguins$bill_length_mm) # A second argument with a default value keep_top_spec <- function(values, cutoff){ values[values > cutoff] } keep_top_spec(penguins$bill_length_mm, cutoff = 40) keep_top_spec <- function(values, cutoff = 45){ values[values > cutoff] } keep_top_spec(penguins$bill_length_mm, cutoff = 40) keep_top_spec(penguins$bill_length_mm) # Errors & warnings keep_top(penguins$species) # ugly warning and output keep_top <- function(values){ if (!is.numeric(values)){ stop("Input vector must be numeric.", call. = FALSE) } values[values > mean(values, na.rm = TRUE)] } keep_top(penguins$species) keep_top <- function(values){ if (!is.numeric(values)){ warning("Input vector must be numeric.", call. = FALSE) return(values) } values[values > mean(values, na.rm = TRUE)] } keep_top(penguins$species) # passing arguments to function as a list args <- list(penguins$bill_length_mm, cutoff = 50) keep_top_spec(args) # won't work do.call(keep_top_spec, args) ================================================ FILE: Writing prompts using interpolate()/README.md ================================================ # Writing prompts using `interpolate()` []() Hi everybody! In this folder, you'll find materials supporting my vid, **Writing prompts using `interpolate()`**, which you can find at . ================================================ FILE: Writing prompts using interpolate()/interpolate.R ================================================ library(ellmer) ?interpolate # Simple prompting -------------------------------------------------------- chat <- chat_openai("You are a friendly but terse statistics mentor. Give answers at an advanced undergraduate level.", model = "gpt-5-nano") prompt <- "Briefly explain the central limit theorem." chat$chat(prompt) # Interpolation ----------------------------------------------------------- prompt_open <- "Briefly explain {{ topic }}." interpolate(prompt_open, topic = "the central limit theorem") prompt_open_g <- "Briefly explain {topic}." glue::glue(prompt_open_g, topic = "the central limit theorem") my_topics <- c("the central limit theorem", "maximum likelihood estimation") interpolate(prompt_open, topic = my_topics) # Functions --------------------------------------------------------------- stats_help <- function(topic){ chat <- chat_openai("You are a friendly but terse statistics mentor. Give answers at an advanced undergraduate level.", model = "gpt-5-nano") chat$chat(interpolate("Briefly explain {{ topic }}."), echo = "none") } stats_help("central limit theorem") lapply(my_topics, stats_help) ================================================ FILE: youtube.Rproj ================================================ Version: 1.0 ProjectId: 6d3f8929-1ad4-4ed7-a37e-f5c04529d548 RestoreWorkspace: Default SaveWorkspace: Default AlwaysSaveHistory: Default EnableCodeIndexing: Yes UseSpacesForTab: Yes NumSpacesForTab: 2 Encoding: UTF-8 RnwWeave: Sweave LaTeX: pdfLaTeX