library(tidyverse)
library(here)
library(janitor)
source(here("R", "theme_course.R"))
theme_set(theme_course())2 Start projektu
Na początku ustawiamy środowisko i przechodzimy przez minimalny przepływ pracy: import danych, szybką kontrolę jakości, pierwszą agregację i pierwszy wykres.
2.1 Środowisko
Docelowo pracujemy w R 4.5.3 lub nowszym stabilnym wydaniu. Po zainstalowaniu R i Quarto uruchom w terminalu:
Rscript R/setup.R
quarto previewPo pierwszym renderze projektu zapisz wersje pakietów, czyli zamroź zależności:
renv::init(bare = TRUE)
renv::snapshot()2.2 Pakiety
W przykładach używamy natywnego pipe |>. Jest czytelny, dostępny w nowoczesnym R i nie wymaga dodatkowego operatora z pakietu.
2.3 Import danych
Zaczniemy od grantów szkolnych. Plik ma pierwszą kolumnę indeksową bez znaczenia, więc usuwamy ją po imporcie.
grants <- readr::read_csv(
here("datasets", "schoolimprovement2010grants.csv"),
show_col_types = FALSE
) |>
janitor::clean_names() |>
dplyr::select(-dplyr::any_of("x1")) |>
dplyr::mutate(
award_amount = as.numeric(award_amount),
model_selected = dplyr::recode(
model_selected,
Closure = "Zamknięcie",
Restart = "Restart",
Turnaround = "Restrukturyzacja",
Transformation = "Transformacja"
),
region = dplyr::recode(
region,
Midwest = "Środkowy Zachód",
Northeast = "Północny Wschód",
South = "Południe",
West = "Zachód"
)
)
dplyr::glimpse(grants)Rows: 757
Columns: 7
$ school_name <chr> "HOGARTH KINGEEKUK MEMORIAL SCHOOL", "AKIACHAK SCHOOL",…
$ city <chr> "SAVOONGA", "AKIACHAK", "GAMBELL", "WASILLA", "AKIAK", …
$ state <chr> "AK", "AK", "AK", "AK", "AK", "AK", "AK", "AL", "AL", "…
$ district_name <chr> "BERING STRAIT SCHOOL DISTRICT", "YUPIIT SCHOOL DISTRIC…
$ model_selected <chr> "Transformacja", "Transformacja", "Transformacja", "Tra…
$ award_amount <dbl> 471014, 520579, 449592, 641184, 399686, 697703, 427658,…
$ region <chr> "Zachód", "Zachód", "Zachód", "Zachód", "Zachód", "Zach…
2.4 Pierwszy wykres
grants |>
ggplot(aes(x = award_amount)) +
geom_histogram(bins = 30, fill = "#0072B2", color = "white", linewidth = 0.25) +
scale_x_continuous(labels = scales::label_dollar()) +
labs(
title = "Większość grantów skupia się przy niższych kwotach",
subtitle = "Pierwszy wykres zawsze zaczynamy od pytania o kształt danych",
x = "Kwota grantu",
y = "Liczba szkół",
caption = "Źródło: datasets/schoolimprovement2010grants.csv"
)
2.5 Zadanie
Zmień liczbę przedziałów histogramu (bins) w geom_histogram() na 10, 20 i 50. Zapisz jedną obserwację: czy zmienia się wniosek z wykresu, czy tylko jego szczegółowość?