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

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

V R existuje široká škála nástrojů pro manipulaci s daty. Jedním z klíčových aspektů práce s daty je jejich tvarování, tedy přizpůsobení struktury dat vašim specifickým potřebám. K tomuto účelu slouží funkce melt() a cast() z balíčku reshape2, které vám pomohou transformovat data z širokého formátu do úzkého a naopak.

Úvod do funkce melt()

Funkce melt() slouží k transformaci dat z širokého formátu do úzkého. Představte si například tabulku s řádky představujícími různé produkty a sloupci s jejich vlastnostmi (např. cena, dostupnost, skladové číslo). V tomto širokém formátu je obtížné analyzovat data podle vlastností, jelikož každá vlastnost je ve svém sloupci.

Funkce melt() tuto tabulku „roztaví“ – sloučí data všech vlastností do jednoho sloupce a vytvoří nový sloupec s názvem vlastnosti. Díky tomu získáte data ve formátu „úzkém“, která jsou ideální pro analýzu a vizualizaci trendů podle různých vlastností.

Příklad použití funkce melt()

r

Nainstalujte a načtěte balíček reshape2

install.packages("reshape2")
library(reshape2)

Vytvořte si ukázkový data frame

data <- data.frame(
Produkt = c("A", "B", "C"),
Cena = c(100, 150, 200),
Dostupnost = c(TRUE, FALSE, TRUE),
SkladoveCislo = c(123, 456, 789)
)

"Roztavte" data pomocí melt()

melted_data <- melt(data, id.vars = "Produkt")

Vypište výsledný data frame

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 |

Vidíme, že funkce melt() vytvořila data frame s třemi sloupci: Produkt, variable a value. Sloupec variable obsahuje názvy všech vlastností a sloupec value obsahuje odpovídající hodnoty.

Úvod do funkce cast()

Funkce cast() slouží k transformaci dat z úzkého formátu do širokého. V „úzkém“ formátu jsou data ve formě „dlouhých“ sloupců, kde každý řádek představuje jeden záznam. Funkce cast() tyto data „zformuje“ a vytvoří nový data frame, kde budou data rozdělena do sloupců podle specifické vlastnosti.

Příklad použití funkce cast()

r

Vytvořte si ukázkový data frame 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)
)

"Zformujte" data pomocí cast()

casted_data <- dcast(data, Produkt ~ Vlastnost, value.var = "Hodnota")

Vypište výsledný data frame

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ý data frame, kde každý sloupec reprezentuje jinou vlastnost a každý řádek představuje jiný produkt.

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

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

* reshape(): Tato funkce umožňuje jednoduchou transformaci dat mezi širokým a úzkým formátem.
* gather() a spread(): Tyto funkce z balíčku tidyr slouží k transformaci dat do „dlouhého“ a „širokého“ formátu.
* pivot_longer() a pivot_wider(): Tyto funkce z balíčku tidyr jsou výkonnější verze funkcí gather() a spread().

Závěr

Funkce melt() a cast() z balíčku reshape2 jsou neocenitelnými nástroji pro manipulaci s daty v R. Pomáhají vám efektivně tvarovat data do formátu, který je optimální pro další analýzu a vizualizaci. 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()?
melt() je specializovaná funkce pro transformaci do úzkého formátu a používá 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()?
– Používejte cast() tehdy, když potřebujete přetvořit data z úzkého formátu do širokého. To je užitečné pro srovnání dat podle různých vlastností (například pro generování grafu).

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

4. Jaké jsou další užitečné funkce pro manipulaci s daty v R?
– Kromě melt() a cast() je užitečné znát i funkce jako reshape(), gather(), spread(), pivot_longer() a pivot_wider(). Tyto funkce vám pomohou s transformací dat do různých formátů a s jejich reorganizací.

5. Kde najdu více informací o manipulaci s daty v R?
– Na internetu najdete mnoho zdrojů informací o manipulaci s daty v R. Začněte s oficiální dokumentací balíčku reshape2 a balíčku tidyr. Doporučujeme také prozkoumat online kurzy a tutoriály, které vám pomohou s praktickým učením.

6. Co je to široký formát dat v R?
– V širokém formátu dat jsou různé vlastnosti dat reprezentovány v samostatných sloupcích. Tento formát je vhodný pro zobrazení a srovnání dat, ale 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 dat sloučeny do jednoho sloupce, zatímco další sloupec definuje typ vlastnosti. Tento formát je vhodný pro analýzu dat, protože umožňuje snadné srovnání dat podle různých vlastností.

8. Co je to balíček tidyr v R?
tidyr je balíček v R, který poskytuje funkce pro manipulaci s daty, včetně funkcí pro transformaci dat do „dlouhého“ a „širokého“ formátu. Tyto funkce jsou užitečné pro vytváření čistých a snadno analyzovatelných dat.

9. Jak mohu zjistit, zda je můj data frame v širokém nebo úzkém formátu?
– Zjistěte, zda vaše data jsou v širokém nebo úzkém formátu, jednoduchým prohlížením vašeho data frame. V širokém formátu jsou vlastnosti reprezentovány ve sloupcích. V úzkém formátu jsou všechny vlastnosti shromažďovány do jednoho sloupce a druhý sloupec určuje typ vlastnosti.

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

Tags: R, reshape2, melt, cast, dcast, reshape, gather, spread, pivot_longer, pivot_wider, tidyverse, data manipulation, data format, wide format, long format, data transformation, data analysis, data visualization