Slovník | Vyhledávání | Mapa webu
 
Základy informatiky pro biologyVýpočetní matematické systémy Výuka jazyka R Datové tabulky a seznamy Základní příkazy, tvorba datových tabulek a seznamů

Logo Matematická biologie

Základní příkazy, tvorba datových tabulek a seznamů

Datová tabulka je 2-dimenzionální struktura, která slouží k uchování souboru dat. Soubor dat se skládá z množiny proměnných (sloupce), které jsou pozorovány na množství případů (řádky). Jednotlivé sloupce mohou být různých datových typů, ale prvky každého sloupce musí být stejného datového typu. Počet případů musí být pro každou proměnnou stejný.

Seznam je nejobecnější datová struktura v R, která seskupuje několik (různých) objektů do objektu většího rozsahu. Jedná se o datovou strukturu skládající se z posloupnosti objektů, kterým se říká složky. Každá složka může obsahovat objekt jakéhokoliv datového typu. Seznam tedy může obsahovat vektory různých datových typů a délek, matice, pole, datové tabulky, funkce a/nebo jiné seznamy. Proto jsou seznamy vhodnými výstupy nejrůznějších výpočtů.

Rovněž je důležité si uvědomit, že datová tabulka je speciálním případem seznamu. Nejedná se o nic jiného, než seznam, jehož složky jsou vektory stejné délky a odpovídající pozice vyjadřují stejné případy (např. výskyt aut červené a modré barvy během středy).

Datovou tabulku vytvoříme příkazem data.frame(). Argumenty nazev_1=vektor_1, nazev_2=vektor_2,... specifikujeme názvy sloupců (proměnných) a jejich hodnoty, názvy sloupců jsou nepovinné, stačí zadat pouze hodnoty. Argument row.names (implicitní nastavení NULL případy čísluje) specifikuje názvy případů. Argument check.names s implicitním nastavením TRUE kontroluje, zda jsou názvy proměnných syntakticky správné a zda se neopakují, v případě duplikací se stará o jejich přejmenování.

> data.frame(obor=factor(c(1, 0, 0, 1, 1), labels=c("OM", "MAEK")), body=c(18, 13, 15, 20,

+ 15))

 
obor
body
1
MAEK
18
2
OM
13
3
OM
15
4
MAEK
20
5
MAEK
15
> data.frame(obor=factor(c(1, 0, 0, 1, 1), labels=c("OM", "MAEK")), body=c(18, 13, 15, 20,
+ 15), row.names=c("Petr", "Pavel", "Jirina", "Adela", "Matej"))
 
obor
body
Petr
MAEK
18
Pavel
OM
13
Jirina
OM
15
Adela
MAEK
20
Matej
MAEK
15

> data.frame(a=c(1,2), a=c(T,F), check.names=T)

 
a
a.1
1
 1
TRUE
2
2
FALSE

> data.frame(a=c(1,2), a=c(T,F), check.names=F)

 
a
a
1
 1
TRUE
2
2
FALSE

Funkce list() slouží k vytvoření seznamu. Stejně jako u funkce data.frame() mohou být i složky seznamu pojmenovány pomocí argumentů nazev_1=slozka_1, nazev_2=slozka_2,....

> (l <- list(barva=c("cervena", "modra", "bila"), data.frame(Petr= sample(5, replace=T),
+ Pavel=1:5, row.names=c("po","ut", "st", "ct", "pa"))))
$barva
[1]    "cervena"     "modra"    "bila"
[[3]]
 
Petr
Pavel
po
1
1
ut
3
2
st
3
3
ct
5
4
pa
3
5

Funkce dim(), names() a contents() slouží k výpisu vlastností datové tabulky. Funkce dim() vypisuje dimenze tabulky dat, funkce names() zobrazuje názvy proměnných. Funkce contents() vrací vnitřní strukturu datové tabulky. Funkce je obsažena v balíčku Hmisc, který není ve standardní distribuci, je třeba jej proto doinstalovat příkazem install.packages("Hmisc") a načíst příkazem library(Hmisc)

K výpisu vlastností seznamu můžeme použít funkci names(), která vrací názvy složek seznamu. Funkce dim() a contents() u seznamu použít nemůžeme, můžeme je ovšem nahradit funkcemi length(), která vrací počet složek seznamu, a str(),  která vypisuje vnitřní strukturu seznamu.

 
vytvořil Institut biostatistiky a analýz Lékařské fakulty Masarykovy univerzity