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 85Zamiast 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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyUtwó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:
- Przekształcić ciąg wejściowy w ramkę danych
- Użyć funkcji
pivot_longer(), aby przekształcić dane z formatu szerokiego na długi - Zmienić nazwy wynikowych kolumn na "subject" i "score"
- Uporządkować dane według imienia ucznia, a następnie według przedmiotu
- 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
1Podstawy danych
Poznawanie struktur danychIndeksowanie w DataFrameWybieranie podzbioru danychKonwersja typów danychOperator potoku w R4Zaawansowana manipulacja danymi
Manipulowanie ciągami znakówObsługa daty i czasuFunkcje niestandardowe2Przekształcanie danych
Wprowadzenie do dplyrAgregowanie danych za pomocą dplyrŁączenie danych za pomocą dplyrPoćwicz samodzielnie: Kompilator R online