Przejdź do głównej treści
eLearner.app
Moduł 3 · Lekcja 2 z 26/10 w kursie~15 min
Lekcje modułu (2/2)

Eksploracja i Agregacja

R powstał głównie jako środowisko statystyczne, w związku z czym udostępnia liczne wbudowane funkcje do analizowania, podsumowywania i rozumienia rozkładu danych w wektorach lub tabelach.

Podstawowe Funkcje Statystyczne

R pozwala z łatwością obliczać główne wskaźniki położenia i zmienności na wektorach liczbowych:

  • mean(x): Oblicza średnią arytmetyczną elementów.
  • median(x): Oblicza medianę (wartość środkową).
  • sd(x): Oblicza odchylenie standardowe (miarę rozproszenia danych).
  • min(x) i max(x): Zwracają odpowiednio wartość minimalną i maksymalną.
Code
values <- c(10, 12, 15, 18, 20, 22)

avg <- mean(values)
dispersion <- sd(values)

cat("Średnia:", avg, "- Odch. std:", round(dispersion, 2), "\n")

Obsługa Brakujących Danych (NA)

W rzeczywistym świecie zestawy danych często zawierają brakujące wartości, reprezentowane w R przez specjalną wartość NA (Not Available).

Jeśli spróbujesz obliczyć średnią lub jakikolwiek inny agregat na wektorze, który zawiera chociażby jedną wartość NA, R zwróci NA jako wynik. Aby zignorować brakujące wartości, musisz przekazać argument logiczny na.rm = TRUE (NA remove):

Code
temperatures <- c(18, 21, NA, 24, 19)

# To zwróci NA
print(mean(temperatures))

# To zignoruje NA i wykona obliczenia na poprawnych wartościach
print(mean(temperatures, na.rm = TRUE))

Globalne Podsumowanie za Pomocą summary()

Funkcja summary() to potężne narzędzie, które zapewnia kompletny przegląd statystyczny wektora lub całej ramki danych (Data Frame), pokazując minimum, pierwszy kwartyl, medianę, średnią, trzeci kwartyl oraz maksimum:

Code
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))

Agregacja Danych z aggregate

Podczas pracy z ramkami danych często chcemy obliczyć statystyki podsumowujące (takie jak średnia lub suma) dla grup lub kategorii. Funkcja aggregate() w R upraszcza ten proces:

Code
df <- data.frame(
  department = c("HR", "IT", "HR", "IT"),
  salary = c(3000, 4500, 3200, 4800)
)

# Oblicza średnią pensję dla każdego działu
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)

Składnia salary ~ department oznacza „analizuj zmienną salary w zależności od zmiennej department”. Argument FUN = mean określa, że chcemy obliczyć średnią arytmetyczną dla każdej grupy.

Zaawansowane Filtrowanie z subset

Funkcja subset() zapewnia intuicyjny i elegancki sposób wyodrębniania podzbiorów wierszy i kolumn z ramki danych, unikając stosowania skomplikowanych nawiasów kwadratowych:

Code
employees <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 34, 29),
  active = c(TRUE, FALSE, TRUE)
)

# Filtruje tylko aktywnych pracowników w wieku powyżej 28 lat
active_employees <- subset(employees, active == TRUE & age > 28)

Spróbuj sam

Ćwiczenie#r.m3.l2.e1
Próby: 0Ładowanie...

Dla danego wektora temperatures, oblicz średnią i zapisz ją w zmiennej mean_temp. Następnie oblicz medianę i zapisz ją w median_temp.

Ładowanie edytora...
Pokaż wskazówkę

Użyj mean_temp <- mean(temperatures) i median_temp <- median(temperatures)

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m3.l2.e2
Próby: 0Ładowanie...

Dla danego wektora scores zawierającego wartość NA, oblicz odchylenie standardowe wektora z wyłączeniem brakujących wartości i zapisz je w zmiennej sd_scores.

Ładowanie edytora...
Pokaż wskazówkę

Użyj funkcji sd() z argumentem na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m3.l2.e3
Próby: 0Ładowanie...

Dla danej ramki danych df, uzyskaj podsumowanie statystyczne (summary) kolumny values i zapisz je w zmiennej stats_summary.

Ładowanie edytora...
Pokaż wskazówkę

Wyodrębnij kolumnę za pomocą operatora $ i przekaż ją do summary(): stats_summary <- summary(df$values)

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m3.l2.e4
Próby: 0Ładowanie...

Dla danej ramki danych sales, użyj funkcji aggregate() do obliczenia sumy (FUN = sum) kolumny revenue pogrupowanej według region. Zapisz wynik w region_sales.

Ładowanie edytora...
Pokaż wskazówkę

Użyj: region_sales <- aggregate(revenue ~ region, data = sales, FUN = sum)

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#r.m3.l2.e5
Próby: 0Ładowanie...

Dla danej ramki danych products, użyj funkcji subset() do przefiltrowania tylko produktów, które należą do kategorii 'Electronics' (category == 'Electronics') i mają cenę większą niż 100 (price > 100). Zapisz wynik w zmiennej expensive_electronics.

Ładowanie edytora...
Pokaż wskazówkę

Użyj: expensive_electronics <- subset(products, category == 'Electronics' & price > 100)

Rozwiązanie dostępne po 3 próbach