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 preview

Po pierwszym renderze projektu zapisz wersje pakietów, czyli zamroź zależności:

renv::init(bare = TRUE)
renv::snapshot()

2.2 Pakiety

library(tidyverse)
library(here)
library(janitor)

source(here("R", "theme_course.R"))
theme_set(theme_course())

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"
  )
Histogram pokazuje, że większość grantów ma niższe kwoty, a tylko kilka obserwacji znajduje się w prawym ogonie rozkładu.
Rysunek 2.1: Rozkład kwot grantów szkolnych.

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ść?