Skip to content
Coming soon: Ally. Your guide to the world of AI and R. Learn More →
R for the Rest of Us Logo

Going Deeper with R

Pipe Data in ggplot

Transcript

Click on the transcript to go to that point in the video. Please note that transcripts are auto generated and may contain minor inaccuracies.

View code shown in video
# Load Packages -----------------------------------------------------------

library(tidyverse)
library(fs)

# Create Directory --------------------------------------------------------

dir_create("data")

# Download Data -----------------------------------------------------------

download.file(
  "https://github.com/rfortherestofus/going-deeper-positron/raw/main/data/third_grade_math_proficiency.rds",
  mode = "wb",
  destfile = "data/third_grade_math_proficiency.rds"
)

# Import Data -------------------------------------------------------------

third_grade_math_proficiency <-
  read_rds("data/third_grade_math_proficiency.rds") |>
  select(
    academic_year,
    school,
    school_id,
    district,
    proficiency_level,
    number_of_students
  ) |>
  mutate(
    is_proficient = case_when(
      proficiency_level >= 3 ~ TRUE,
      .default = FALSE
    )
  ) |>
  group_by(academic_year, school, district, school_id, is_proficient) |>
  summarize(number_of_students = sum(number_of_students, na.rm = TRUE)) |>
  ungroup() |>
  group_by(academic_year, school, district, school_id) |>
  mutate(
    percent_proficient = number_of_students /
      sum(number_of_students, na.rm = TRUE)
  ) |>
  ungroup() |>
  filter(is_proficient == TRUE) |>
  select(academic_year, school, district, percent_proficient) |>
  rename(year = academic_year)


# Plot --------------------------------------------------------------------

third_grade_math_proficiency |>
  filter(year == "2018-2019") |>
  filter(district == "Portland SD 1J") |>
  ggplot(aes(x = percent_proficient, y = school)) +
  geom_col()

Your Turn

  1. Create a new R script file.

  2. Download the enrollment data by race/ethnicity and create a data frame called enrollment_by_race_ethnicity using the starter code below.

  3. Pipe your data into a bar chart that shows the breakdown of race/ethnicity among students in Beaverton SD 48J in 2022-2023.

# Load Packages -----------------------------------------------------------

library(tidyverse)
library(fs)

# Create Directory --------------------------------------------------------

dir_create("data")

# Download Data -----------------------------------------------------------

download.file(
  "https://github.com/rfortherestofus/going-deeper-positron/raw/main/data/enrollment_by_race_ethnicity.rds",
  mode = "wb",
  destfile = "data/enrollment_by_race_ethnicity.rds"
)

# Import Data -------------------------------------------------------------

enrollment_by_race_ethnicity <-
  read_rds("data/enrollment_by_race_ethnicity.rds") |>
  select(-district_institution_id) |>
  select(year, district, everything())

# Plot --------------------------------------------------------------------

Have any questions? Put them below and we will help you out!

You need to be signed-in to comment on this post. Login.

Eda Akpek

Eda Akpek • May 6, 2026

I didn't understand the first part of the solution:

enrollment_by_race_ethnicity <- read_rds("data/enrollment_by_race_ethnicity.rds") |> select(-district_institution_id) |> select(year, district, everything())

How to know to do the second two lines of code in this code chunk? What is happening when you do it this way?

Gracielle Higino

Gracielle Higino Coach • May 7, 2026

The first select() is removing the column district_institution_id by adding a minus sign before the name of the column, the second is reordering the columns to place variables year and district first (from left to right) before all other columns (defined by the everything() function). The select() function does a lot of things, more than just selecting variables! You can even rename columns with it. You can read more about it here: https://dplyr.tidyverse.org/reference/select.html

Eda Akpek

Eda Akpek • May 6, 2026

What is the pct supposed to be?

Gracielle Higino

Gracielle Higino Coach • May 7, 2026

Hi Eda! I don't think I understand your question, can you expand on it a bit more?

Course Content

44 Lessons