Menu
Coddy logo textTech

Format długi na szeroki

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

Przekształcanie danych z formatu długiego na szeroki to istotna umiejętność w manipulowaniu danymi, szczególnie przydatna przy tworzeniu bardziej kompaktowych reprezentacji danych. W tej lekcji skupimy się na użyciu funkcji pivot_wider() z pakietu tidyr do przekształcania danych z formatu długiego na szeroki.

1. Zrozumienie formatów długiego i szerokiego

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

2. Funkcja pivot_wider()

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

pivot_wider(data, names_from = "key", values_from = "value")

3. Przykład: użycie pivot_wider()

Przyjrzyjmy się przykładowi:


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

# Utwórz przykładowy zbiór danych w formacie długim
long_data <- data.frame(
  name = c("Alice", "Alice", "Alice", "Bob", "Bob", "Bob"),
  subject = c("math", "science", "history", "math", "science", "history"),
  score = c(85, 92, 78, 76, 88, 82)
)

# Przekształć do formatu szerokiego
wide_data <- pivot_wider(long_data, 
                         names_from = "subject",
                         values_from = "score")

print(wide_data)

4. Zrozumienie argumentów

  • names_from: Określa, która kolumna zawiera nazwy nowych kolumn w formacie szerokim.
  • values_from: Określa, która kolumna zawiera wartości dla nowych kolumn.

5. Obsługa wielu kolumn z wartościami

Możesz jednocześnie przekształcić wiele kolumn z wartościami:


long_data_multi <- data.frame(
  name = c("Alice", "Alice", "Bob", "Bob"),
  year = c(2022, 2023, 2022, 2023),
  score = c(85, 90, 76, 82),
  rank = c(2, 1, 3, 2)
)

wide_data_multi <- pivot_wider(long_data_multi,
                               names_from = year,
                               values_from = c(score, rank))

print(wide_data_multi)

Opanowanie funkcji pivot_wider() pozwoli Ci sprawnie przekształcać dane z formatu długiego na szeroki, tworząc bardziej kompaktowe reprezentacje dostosowane do konkretnych potrzeb analitycznych w R.

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 z ocenami uczniów w formacie długim na format szeroki za pomocą funkcji pivot_wider() z pakietu tidyr. Funkcja powinna wykonać następujące operacje:

  1. Przekształcić wejściowy ciąg znaków w ramkę danych
  2. Użyć funkcji pivot_wider(), aby przekształcić dane z formatu długiego na format szeroki
  3. Posortować wynikową ramkę danych według imienia i nazwiska ucznia (użyć %>% arrange(student))
  4. Wyświetlić ramkę danych w formacie szerokim

Spróbuj swoich sił

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

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

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

# TODO: Napisz poniżej kod przekształcający ramkę danych
# Wskazówka: Użyj funkcji pivot_wider(), aby przekształcić dane z formatu długiego na szeroki
# Nie zapomnij posortować wynikowej ramki danych według imienia studenta

# Wyświetl wynik
# print(result)

Wszystkie lekcje w sekcji Manipulowanie danymi w R

Poćwicz samodzielnie: Kompilator R online