Autor článku: Lenka Fiřtová

V tomto článku se dozvíme, co je to data frame a jak s ním v R pracovat.

Příklad 1: Vytvoření data framu

Data frame můžeme chápat jako soubor dat, kde každý řádek představuje jedno pozorování (například jednoho člověka) a každý sloupec jednu charakteristiku (například věk, pohlaví apod.).

Jednotlivé sloupce mohou obsahovat data různých typů (text, čísla, kategorie apod.). Sloupce musí být stejně dlouhé, chybějící hodnoty lze ovšem případně nahradit NA (not applicable).

Data frame můžeme v R vytvořit „ručně“, nebo importovat. Ukážeme si obě možnosti.

„Ručně“ postupujeme tak, že nejprve vytvoříme jednotlivé proměnné. Zde si například proměnné jméno, věk a pohlaví.

> jmeno = c ("Anna","Bara","Cyril","David","Eva")>

> vek= c(25, 37, 41, 29, 32)

> pohlavi = c("Z","Z","M","M","Z")

Tyto proměnné pak spojíme do data framu s názvem muj_DF pomocí příkazu data.frame.

> muj_DF = data.frame(jmeno, vek, pohlavi)

> muj_DF

jmeno vek pohlavi

1 Anna 25 Z

2 Bara 37 Z

3 Cyril 41 M

4 David 29 M

5 Eva 32 Z

Zkušenější uživatelé mohou oba tyto kroky provést zároveň.

Dalším způsobem, jak získat data frame, je načíst jej z externího souboru. Přestože je možné načítat data z excelu, doporučuje se používat spíše textové soubory, například ty s příponou csv. Taková data načítáme příkazem read.csv2. Pokud by se například potřebný soubor jmenoval data, načteme jej takto.

> muj_DF = read.csv2("data.csv")

Podrobněji viz kapitola o importu a exportu dat.

Příklad 2: Práce s data framy

Teď, když máme k dispozici data frame, si můžeme ukázat základní operace s ním.

Přejmenování sloupců

Sloupce data framu můžeme libovolně přejmenovávat. Například kdybychom chtěli přejmenovat názvy sloupců v našem data framu z českých na anglické, postupujeme takto:

> names(muj_DF) = c("name","age","sex")

> muj_DF

name age sex

1 Anna 25 Z

2 Bara 37 Z

3 Cyril 41 M

4 David 29 M

5 Eva 32 Z

Prohlédnutí data framu

Užitečnými funkci v souvislosti s data framy jsou funkce head, tail a View.

Funkce head zobrazí prvních několik řádků data framu, funkce tail několik posledních řádků. Funkce View (pozor, první V je velké) otevře náhled data framu v podobě tabulky.

Syntaxe je prostá:

> head(muj_DF)

> tail(muj_DF)

> View(muj_DF)

Samozřejmě u našeho malého data framu tyto funkce postrádají poněkud smysl, ale u velkých data framů mohou být velmi nápomocné.

Výběr konkrétních řádků a sloupců

Někdy nás zajímají jen určité řádky či sloupce, nikoli celý data frame. Nejprve si ukažme filtrování sloupců.

Takto vyfiltrujeme pouze třetí sloupec:

> muj_DF[ , 3]

[1] Z Z M M Z

Levels: M Z

Takto vyfiltrujeme druhý a třetí sloupec:

> muj_DF[ , c(2,3)]

age sex

1 25 Z

2 37 Z

3 41 M

4 29 M

5 32 Z

Řádky filtrujeme analogicky, ale čísla řádků, které nás zajímají, píšeme do hranatých závorek před čárku.

Takto vyfiltrujeme pouze třetí řádek:

> muj_DF[3, ]

name age sex

3 Cyril 41 M

Takto vyfiltrujeme druhý a třetí řádek:

> muj_DF[c(2,3), ]

name age sex

2 Bara 37 Z

3 Cyril 41 M

Vidíme tedy, že používáme hranaté závorky, kam před čárku píšeme čísla řádků, které chceme zobrazit, a za čárku čísla sloupců.

Můžeme to samozřejmě i zkombinovat. Takto například zobrazíme hodnotu v druhém řádku a prvním sloupci.

> muj_DF[2, 1]

[1] Bara

Přidávání a odebírání sloupců a řádků

Sloupce přidáváme příkazem cbind (c je od anglického slova column – sloupec).

Připravíme si například další proměnnou, kam uložíme počet dětí dotyčných osob.

> children = c(0, 2, 1, 1, 0)

Příkazem cbind tuto proměnnou „přilepíme“ ke stávajícímu data framu.

> muj_DF = cbind(muj_DF, children)

> muj_DF

name age sex children

1 Anna 25 Z 0

2 Bara 37 Z 2

3 Cyril 41 M 1

4 David 29 M 1

5 Eva 32 Z 0

Pro přidávání řádků bychom analogicky použili příkaz rbind ( r od anglického slova row – řádek).

Sloupce můžeme odebírat následovně:

> muj_DF = muj_DF[ , -4]

Tento příkaz nám říká, že data frame muj_DF chceme přepsat, a to tak, že použijeme původní data_frame, ale vypustíme z něj čtvrtý sloupec (proto je před čtyřkou symbol mínus). Samozřejmě „okleštěný“ data frame (bez čtvrtého sloupce) lze uložit i do jiné proměnné, například muj_DF2, a to příkazem:

> muj_DF2 = muj_DF[ , -4]

Pokud bychom chtěli odebrat čtvrtý řádek, postupujeme analogicky, ale číslo odebíraného řádku píšeme před čárku.

> muj_DF = muj_DF[-4, ]

Autor článku: Lenka Fiřtová