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.
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 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:
- Przekształcić wejściowy ciąg znaków w ramkę danych
- Użyć funkcji
pivot_wider(), aby przekształcić dane z formatu długiego na format szeroki - Posortować wynikową ramkę danych według imienia i nazwiska ucznia (użyć
%>% arrange(student)) - 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
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