Funkce R melt() a cast() – Změna tvaru dat v R

V prostředí R se nabízí rozsáhlá paleta nástrojů pro práci s daty. Jedním z klíčových aspektů je jejich úprava, tedy přizpůsobení struktury dat konkrétním požadavkům. Pro tento účel jsou velmi užitečné funkce melt() a cast(), které pocházejí z knihovny reshape2. Tyto funkce umožňují transformovat data z formátu širokého do úzkého a naopak.

Seznámení s funkcí melt()

Úkolem funkce melt() je převést data z širokého formátu do úzkého. Představte si tabulku, kde řádky označují jednotlivé produkty a sloupce obsahují jejich charakteristiky (např. cena, dostupnost, kód produktu). V tomto uspořádání je obtížné provádět analýzu dat podle charakteristik, protože každá z nich má svůj vlastní sloupec.

Funkce melt() takovou tabulku transformuje – sloučí hodnoty všech charakteristik do jediného sloupce a zároveň vytvoří nový sloupec s názvem charakteristiky. Výsledkem je formát „úzký“, který je vhodný pro analýzy a vizualizaci trendů podle různých charakteristik.

Praktický příklad použití melt()

r
# Instalace a načtení balíčku reshape2
if(!require(reshape2)){install.packages("reshape2")}
library(reshape2)
# Vytvoření demonstračního datového rámce
data <- data.frame(
Produkt = c("A", "B", "C"),
Cena = c(100, 150, 200),
Dostupnost = c(TRUE, FALSE, TRUE),
SkladoveCislo = c(123, 456, 789)
)
# Transformace dat pomocí melt()
melted_data <- melt(data, id.vars = "Produkt")
# Zobrazení výsledného datového rámce
print(melted_data)

Výsledek:

Produkt variable value
A Cena 100
B Cena 150
C Cena 200
A Dostupnost TRUE
B Dostupnost FALSE
C Dostupnost TRUE
A SkladoveCislo 123
B SkladoveCislo 456
C SkladoveCislo 789

Jak vidíme, funkce melt() vytvořila tabulku se třemi sloupci: Produkt, variable a value. Sloupec variable obsahuje názvy jednotlivých charakteristik a sloupec value obsahuje odpovídající hodnoty.

Seznámení s funkcí cast()

Funkce cast() slouží k převodu dat z úzkého formátu do širokého. V „úzkém“ formátu jsou data uspořádána do „dlouhých“ sloupců, kde každý řádek reprezentuje jeden záznam. Funkce cast() tato data přeskupí a vytvoří nový datový rámec, ve kterém jsou data rozdělena do sloupců podle vybrané charakteristiky.

Praktický příklad použití cast()

r
# Vytvoření demonstračního datového rámce v úzkém formátu
data <- data.frame(
Produkt = c("A", "A", "A", "B", "B", "B", "C", "C", "C"),
Vlastnost = c("Cena", "Dostupnost", "SkladoveCislo", "Cena", "Dostupnost", "SkladoveCislo", "Cena", "Dostupnost", "SkladoveCislo"),
Hodnota = c(100, TRUE, 123, 150, FALSE, 456, 200, TRUE, 789)
)
# Transformace dat pomocí cast()
casted_data <- dcast(data, Produkt ~ Vlastnost, value.var = "Hodnota")
# Zobrazení výsledného datového rámce
print(casted_data)

Výsledek:

Produkt Cena Dostupnost SkladoveCislo
A 100 TRUE 123
B 150 FALSE 456
C 200 TRUE 789

Funkce cast() vytvořila nový datový rámec, kde každý sloupec reprezentuje jinou charakteristiku a každý řádek jiný produkt.

Další funkce užitečné pro manipulaci s daty

Kromě funkcí melt() a cast() existuje v R i mnoho dalších, které vám pomohou s úpravou dat. Mezi ně patří:

  • reshape(): Tato funkce umožňuje jednoduché transformace mezi širokým a úzkým formátem.
  • gather() a spread(): Tyto funkce z balíčku tidyr slouží k převodu dat do „dlouhého“ a „širokého“ formátu.
  • pivot_longer() a pivot_wider(): Tyto funkce z balíčku tidyr jsou pokročilejší varianty funkcí gather() a spread().

Závěr

Funkce melt() a cast() z balíčku reshape2 jsou užitečné nástroje pro manipulaci s daty v R. Umožňují vám efektivně upravovat data do podoby, která je optimální pro následné analýzy a vizualizace. V kombinaci s dalšími funkcemi pro manipulaci s daty vám R poskytuje široké možnosti pro práci s různými datovými strukturami.

Často kladené otázky (FAQ)

1. Jaký je rozdíl mezi melt() a reshape()?
– Funkce melt() je specificky navržena pro transformaci do úzkého formátu a hodí se pro data s více sloupci, které reprezentují vlastnosti. reshape() je obecnější funkce, která umožňuje transformaci mezi širokým a úzkým formátem, ale je méně flexibilní než melt().

2. Kdy je vhodné použít cast()?
cast() je vhodná, když potřebujete data z úzkého formátu převést do širokého. To je užitečné například při porovnávání dat podle různých vlastností (například pro tvorbu grafů).

3. Jaký je rozdíl mezi cast() a dcast()?
cast() je starší funkce, která slouží k transformaci dat do širokého formátu. dcast() je modernější a flexibilnější varianta s více možnostmi pro transformaci dat.

4. Jaké další užitečné funkce pro manipulaci s daty v R existují?
– Kromě melt() a cast() jsou užitečné také reshape(), gather(), spread(), pivot_longer() a pivot_wider(). Tyto funkce vám pomohou s transformací a reorganizací dat.

5. Kde najdu více informací o manipulaci s daty v R?
– Na internetu existuje mnoho zdrojů o manipulaci s daty v R. Začněte s oficiální dokumentací balíčků reshape2 a tidyr. Doporučujeme také prozkoumat online kurzy a tutoriály.

6. Co je to široký formát dat v R?
– V širokém formátu dat jsou různé vlastnosti reprezentovány v samostatných sloupcích. Tento formát se hodí pro zobrazení a srovnání dat, ale může být obtížný pro analýzu, pokud chcete porovnávat data podle různých vlastností.

7. Co je to úzký formát dat v R?
– V úzkém formátu dat jsou všechny vlastnosti sloučeny do jednoho sloupce, zatímco další sloupec specifikuje typ vlastnosti. Tento formát je vhodný pro analýzu, protože umožňuje snadné porovnání dat podle různých vlastností.

8. Co je to balíček tidyr v R?
tidyr je balíček v R, který nabízí funkce pro manipulaci s daty, včetně transformace dat do „dlouhého“ a „širokého“ formátu. Funkce z tohoto balíčku pomáhají vytvářet přehledná a snadno analyzovatelná data.

9. Jak poznám, zda je můj datový rámec v širokém nebo úzkém formátu?
– Zjistíte to snadno prohlédnutím datového rámce. V širokém formátu jsou vlastnosti reprezentovány ve sloupcích, v úzkém formátu jsou všechny vlastnosti shromážděny v jednom sloupci a druhý sloupec specifikuje typ vlastnosti.

10. Mohu použít funkci melt() na datový rámec s více sloupci?
– Ano, funkce melt() se používá k transformaci dat z širokého do úzkého formátu. Můžete ji použít na datový rámec s libovolným počtem sloupců reprezentujících vlastnosti.

Štítky: R, reshape2, melt, cast, dcast, reshape, gather, spread, pivot_longer, pivot_wider, tidyverse, manipulace s daty, formát dat, široký formát, úzký formát, transformace dat, analýza dat, vizualizace dat