Menu
Coddy logo textTech

Format szeroki na długi

Lekcja 9 z 14 w kursie Manipulowanie danymi w R w Coddy.

W tej lekcji skupimy się na używaniu funkcji pivot_longer() z pakietu tidyr do konwertowania danych z formatu szerokiego na długi.

Omówienie formatów szerokiego i długiego

Format szeroki: każda zmienna ma własną kolumnę.
Format długi: zmienne są przechowywane w parach klucz-wartość, w jednej kolumnie znajdują się nazwy zmiennych, a w drugiej ich wartości.

Funkcja pivot_longer()

Funkcja pivot_longer() z pakietu tidyr służy do przekształcania danych z formatu szerokiego na długi. Oto jej podstawowa składnia:

pivot_longer(data, cols, names_to = "key", values_to = "value")

Przykład:

# Załaduj wymaganą bibliotekę
library(tidyr)

# Utwórz przykładowy zbiór danych w formacie szerokim
wide_data <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  math = c(85, 76, 90),
  science = c(92, 88, 75),
  history = c(78, 82, 85)
)

# Przekształć do formatu długiego
long_data <- pivot_longer(wide_data, 
                          cols = c(math, science, history),
                          names_to = "subject",
                          values_to = "score")

print(long_data)

Wynik:

# Tabela tibble: 9 × 3
  name    subject score
  <chr>   <chr>   <dbl>
1 Alice   math       85
2 Alice   science    92
3 Alice   history    78
4 Bob     math       76
5 Bob     science    88
6 Bob     history    82
7 Charlie math       90
8 Charlie science    75
9 Charlie history    85

Zamiast 4 kolumn: name, math, science i history, mamy 3 kolumny: name, subject, score

Omówienie argumentów

  • cols: Określa, które kolumny przekształcić do formatu długiego.
  • names_to: Określa nazwę nowej kolumny, która będzie zawierać nazwy kolumn z formatu szerokiego.
  • values_to: Określa nazwę nowej kolumny, która będzie zawierać wartości.

Znaczenie w analizie danych

Dane w formacie długim są często preferowane, ponieważ są:

  • Łatwiejsze do przekształcania i analizowania za pomocą narzędzi takich jak dplyr
  • Bardziej odpowiednie do modelowania statystycznego i wizualizacji
  • Zgodne z zasadami uporządkowanych danych
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

challenge icon

Wyzwanie

Łatwy

Utwórz funkcję, która przekształca zbiór danych o wynikach egzaminów uczniów z formatu szerokiego na format długi za pomocą funkcji pivot_longer() z pakietu tidyr. Funkcja powinna wykonać następujące operacje:

  1. Przekształcić ciąg wejściowy w ramkę danych
  2. Użyć funkcji pivot_longer(), aby przekształcić dane z formatu szerokiego na długi
  3. Zmienić nazwy wynikowych kolumn na "subject" i "score"
  4. Uporządkować dane według imienia ucznia, a następnie według przedmiotu
  5. Wyświetlić wynikową ramkę danych w formacie długim

Spróbuj swoich sił

# Odczytaj dane wejściowe
con <- file("stdin", "r")
input_string <- suppressWarnings(readLines(con))

# Przekształć ciąg wejściowy w ramkę danych
data <- read.csv(text = input_string, stringsAsFactors = FALSE)

# Załaduj wymagany pakiet
suppressPackageStartupMessages(library(tidyr))
suppressPackageStartupMessages(library(dplyr))

# TODO: Napisz poniżej kod przekształcający dane
# Użyj pivot_longer(), aby przekształcić dane z formatu szerokiego na długi
# Zmień nazwy kolumn na "subject" i "score"
# Posortuj dane najpierw według imienia ucznia, a następnie według przedmiotu


# Wydrukuj wynikową ramkę danych w formacie długim
print(result)

Wszystkie lekcje w sekcji Manipulowanie danymi w R

Poćwicz samodzielnie: Kompilator R online