Inline R Code
This lesson is called Inline R Code, part of the R in 3 Months (Spring 2026) course. This lesson is called Inline R Code, part of the R in 3 Months (Spring 2026) course.
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.
Loading transcript...
View code shown in video
---
title: "Portland Public Schools Math Proficiency Report"
format:
html:
toc: true
toc-location: left
toc-depth: 1
fig-height: 10
fig-width: 5
execute:
echo: false
warning: false
message: false
---
```{r}
library(tidyverse)
library(here)
library(flextable)
library(gt)
library(scales)
library(marquee)
library(ggrepel)
```
# Introduction
{width=300px fig-align="center" fig-alt="Portland Public Schools logo"}
This is a report on math proficiency results in [Portland Public Schools (PPS)](https://www.pps.net/). The PPS mission statement is as follows:
> We provide rigorous, high-quality academic learning experiences that are inclusive and joyful. We disrupt racial inequities to create vibrant environments for every student to demonstrate excellence.^[https://www.pps.net/about/portland-public-schools-information/overview]
# Plot
```{r}
third_grade_math_proficiency <-
read_rds(here("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)
```
```{r}
theme_dk <- function() {
theme_minimal(base_family = "Geist") +
theme(
axis.title = element_blank(),
legend.position = "none",
panel.grid = element_blank(),
plot.title = element_marquee(width = 1),
plot.title.position = "plot"
)
}
```
```{r}
#| fig-alt: Chart showing growth in math proficiency for PPS schools from 2018-2019 to 2021-2022
#| fig-cap: Chart showing growth in math proficiency for PPS schools from 2018-2019 to 2021-2022
top_growth_school <-
third_grade_math_proficiency |>
filter(district == "Portland SD 1J") |>
group_by(school) |>
mutate(
growth_from_previous_year = percent_proficient - lag(percent_proficient)
) |>
ungroup() |>
slice_max(
order_by = growth_from_previous_year,
n = 1
) |>
pull(school)
plot_title <-
marquee_glue(
"{.orange **{top_growth_school}**} showed large growth
in math proficiency over the last two years"
)
third_grade_math_proficiency |>
filter(district == "Portland SD 1J") |>
mutate(
highlight_school = case_when(
school == top_growth_school ~ "Y",
.default = "N"
)
) |>
mutate(
school = fct_relevel(
school,
top_growth_school,
after = Inf
)
) |>
mutate(
percent_proficient_formatted = percent(percent_proficient, accuracy = 1)
) |>
mutate(
percent_proficient_formatted = case_when(
highlight_school == "Y" & year == "2021-2022" ~
str_glue(
"{percent_proficient_formatted} of students
were proficient
in {year}"
),
highlight_school == "Y" & year == "2018-2019" ~
percent_proficient_formatted
)
) |>
ggplot(
aes(
x = year,
y = percent_proficient,
color = highlight_school,
group = school,
label = percent_proficient_formatted
)
) +
geom_line() +
geom_text_repel(
hjust = 0,
lineheight = 0.9,
direction = "x",
family = "Geist"
) +
scale_color_manual(
values = c(
"Y" = "orange",
"N" = "gray80"
)
) +
scale_x_discrete(
expand = expansion(add = c(0, 0.5))
) +
scale_y_continuous(
labels = percent_format(),
limits = c(0, 1)
# expand = expansion(add = c(0.1, 0.2))
) +
annotate(
geom = "text",
x = 2.02,
y = 0.6,
hjust = 0,
lineheight = 0.9,
color = "gray70",
label = str_glue(
"Each gray line
represents one
school"
)
) +
labs(
title = plot_title
) +
theme_dk()
```
```{r}
third_grade_math_proficiency_wide <-
read_rds(here("data/third_grade_math_proficiency_dichotomous.rds")) |>
filter(district == "Portland SD 1J") |>
filter(
school %in%
c(
"Abernethy Elementary School",
"Ainsworth Elementary School",
"Alameda Elementary School",
"Arleta Elementary School",
"Atkinson Elementary School"
)
) |>
select(year, school, percent_proficient) |>
arrange(school) |>
pivot_wider(
id_cols = school,
names_from = year,
values_from = percent_proficient
)
```
# Table
The following table shows math proficiency in 2018-2019 and 2021-2022 for all PPS schools. If you want to see `r top_growth_school`, you can use the search bar to find it.
```{r}
third_grade_math_proficiency_wide_full <-
read_rds(here("data/third_grade_math_proficiency_dichotomous.rds")) |>
filter(district == "Portland SD 1J") |>
select(year, school, percent_proficient) |>
arrange(school) |>
pivot_wider(
id_cols = school,
names_from = year,
values_from = percent_proficient
)
```
```{r}
third_grade_math_proficiency_wide_full |>
gt() |>
cols_label(school = "School") |>
fmt_percent(
columns = 2:3,
decimals = 0
) |>
opt_interactive(
use_search = TRUE,
use_highlight = TRUE
)
```
Your Turn
Add a line to your report that uses inline R code.
Have any questions? Put them below and we will help you out!
Course Content
144 Lessons
1
Welcome to Fundamentals of R
01:20
2
Update Everything
02:26
3
Start a New Project
02:38
4
The Tidyverse
03:24
5
Pipes
03:52
6
select()
04:43
7
mutate()
03:22
8
filter()
10:18
9
Quiz
10
summarize()
05:38
11
Grouped Summaries
04:24
12
arrange()
02:50
13
Create a New Data Frame
03:30
14
Quiz
15
Bring it All Together (Data Wrangling)
07:09
16
Week 2 Project Assignment
13:10
17
Week 2 Coworking Session (Spring 2026)
18
Week 2 Live Session (Spring 2026)
59:16
1
The Grammar of Graphics
04:36
2
Scatterplots
03:40
3
Histograms
04:51
4
Bar Charts
04:53
5
Quiz
6
Setting color and fill Aesthetic Properties
02:43
7
Setting color and fill Scales
05:12
8
Quiz
9
Setting x and y Scales
02:58
10
Adding Text to Plots
05:50
11
Plot Labels
02:59
12
Themes
02:10
13
Facets
02:56
14
Save Plots
02:49
15
Bring it All Together (Data Visualization)
06:14
16
Week 3 Project Assignment
06:02
17
Week 3 Coworking Session (Spring 2026)
18
Week 3 Live Session (Spring 2026)
1:00:46
1
Downloading and Importing Data
08:13
2
Overview of Tidy Data
05:03
3
Tidy Data Rule #1: Every Column is a Variable
06:26
4
Tidy Data Rule #3: Every Cell is a Single Value
09:27
5
Tidy Data Rule #2: Every Row is an Observation
04:05
6
Quiz
7
Week 6 Coworking Session (Spring 2026)
8
Week 6 Live Session (Spring 2026)
59:31
1
Best Practices in Data Visualization
03:38
2
Tidy Data
02:25
3
Pipe Data in ggplot
08:18
4
Reorder Plots to Highlight Findings
03:50
5
Line Charts
04:13
6
Use Color to Highlight Findings
08:23
7
Declutter
07:53
8
Add Descriptive Labels to Your Plots
09:18
9
Use Titles to Highlight Findings
08:30
10
Use Annotations to Explain
06:35
11
Quiz
12
Week 9 Coworking Session (Spring 2026)
13
Week 9 Live Session (Spring 2026)
1
Advanced Markdown
07:10
2
Tables
15:48
3
Advanced YAML and Code Chunk Options
05:42
4
Inline R Code
03:42
5
Making Your Reports Shine: Word Edition
05:08
6
Making Your Reports Shine: PDF Edition
07:37
7
Making Your Reports Shine: HTML Edition
06:08
8
Presentations
11:12
9
Dashboards
06:20
10
Websites
08:11
11
Publishing Your Work
02:37
12
Quarto Extensions
06:38
13
Parameterized Reporting, Part 1
07:02
14
Parameterized Reporting, Part 2
04:03
15
Parameterized Reporting, Part 3
06:22
16
Quiz
17
Week 12 Coworking Session (Spring 2026)
18
Week 12 Live Session (Spring 2026)
1
All videos from R in 3 Months (Spring 2026)
2
Working with labelled data
05:35
3
Understanding Documentation Pages
05:20
4
Factors in R
11:18
5
Add citations to Quarto documents
10:42
6
Change titles of facet plots
08:16
7
Population pyramid plot
04:24
8
Why use Git - example case
06:13
9
How to access data not on GitHub
13:46
10
Dealing with merge conflicts in GitHub Desktop
03:22
11
Crosstabs
06:58
12
Difference between == and %in%
03:17
13
Quarto - rendering and working directories
13:05
14
Using Function Arguments
13:06
You need to be signed-in to comment on this post. Login.