Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
Základné Funkcie softwareu R Inštalácia a aktivácia balíkov funkcií Importovanie databázy z MS Excell a MS Acces Základný popis databázy Vytvorenie poddatabáz Vytváranie kategorických premenných Príklad Inštalácia a aktivácia balíkov Funkcií Systém R pracuje na základe balíkov funkcií (packages). Sú to súbory, ktoré obsahujú rôzne štatistické funkcie, ktoré je potrebné pred použitím nainštalovať a neskôr pred každým použitím špeciálnym príkazom aktivovať (príkaz library). Základný balík funkcií je nainštalovaný zároveň s inštaláciou systému R ako takého (balík nazvaný base alebo base package). Inštalácia je nasledovná: V menu si vyberte položku packages a install packages alebo install packages from local zip files. Prvá možnosť slúži na inštalovanie priamo z internetu a funguje za podmienky,že ste napojený na internet. Po zvolení možnosti install packages sa vám objaví dialóg, kde si vyberiete najbližší server, z ktorého balík nainštalujete.
V našom prípade je najbližší server v Rakúsku, preto vyberieme zo zoznamu Austriu.
Autor: PhDr.Marek Majdan, PhD.,
[email protected]
Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
Po tomto kroku sa Vám na obrazovke zjaví dialóg so zoznamom balíkov, z ktorých si môžete vybrať a po tom, čo prejdete kurzorom na vybraný balík a stlačíte OK, sa balík automaticky nainštaluje.
Druhým spôsobom je stiahnutie si balíkov vo forme .zip súborov na disk a pomocou voľby install packages from local zip files ju nainštalovať. Súbory balíkov je možné stiahnuť na tejto adrese: http://cran.at.r‐project.org/ Spolu s nainštalovaním balíka sa nainštaluje automaticky aj pomocný súbor, v ktorom nájdete podrobný popis balíka, zoznam príkazov, ich formu, príklady použitia a iné užitočné informácie.
Autor: PhDr.Marek Majdan, PhD.,
[email protected]
Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
Aktivácia balíkov je možná dvoma spôsobmi. Jeden je pomocou menu, výberom možnosti packages‐load packages a druhá je pomocou príkazu library priamo v dialógovom okne R, prípadne Tinn‐R. Formát príkazu library je: library(názov balíka) Pri zadávaní názvu balíka musíte zadať názov, tak ako v skutočnosti je, t.j. rozlišovať medzi veľkými a mylými písmenkami. Napríklad pre aktiváciu balíka Hmisc j epotrebné zadať library(Hmisc), kým library(hmisc) fungovať nebude.
Autor: PhDr.Marek Majdan, PhD.,
[email protected]
Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
Importovanie databázy z MS Excell a MS Acces V praxi sa s najväčšou pravdepodobnosťou stretnete s dátami vo formáte MS Excell, prípadne po ich importovaní, vo formáte databázy MS Access. Na to, aby sme takéto údaje analyzovali pomocou softwareu R, musíme ich importovať, to znamená dostať ich nejakým spôsobom do systému R. Existujú na to špecifické systémy. Najjednoduchšie ich je importovať týmito dvoma spôsobmi: uložiť ich v MS Excell, ako databázove súbory, to znamená súbory s koncovkou .dbf a pouziť príkaz read.dbf importovať ich priamo z databázy MS Access príkazom, resp. súborom príkazov, con(odbcConnectAccess), sql.query a close(con) Importovanie suboru .dbf Príkaz read.dbf k tomu, aby sme použili read.dbf, musíme najprv nainštalovať a spustiť balík nástrojov, nazvaný “foreign”, kedže tento príkaz je súčasťou tohoto balíka. To znamená, že náš script bude začínať príkazom library(foreign) potom môžeme pristúpiť k samotnému importovaniu: príkaz read.dbf má formát read.dbf (súbor), to znamená, že ak sa Váš .dbf súbor volá katka a je uložený priamo na pevnom disku D, príkaz na jeho importovanie bude vyzerať nasledovne: read.dbf(D:\katka.dbf) ak chceme vytvoriť databázu, ktorá má obsahovať údaje, ktoré sa nachádzaju v súbore katka.dbf, použijeme formát príkazu: x<‐read.dbf(D:\katka.dbf), kde x je názov Vašej novej R databázy, ktorú môžete ľubovoľne nazvať, napr. tiež katka, potom bude príkaz vyzerať: katka<‐read.dbf(D:\katka.dbf). Teraz máme do systému importovanú databázu katka.dbf, ktorú sme si rovnako nazvali katka. Databáza je teraz pripravená k ďalším analýzam. Importovanie zo súboru .mdb programu MS Access k importovaniu súborov .mdb potrebujeme súbor troch príkazov con(odbcConnectAccess), sql.query a close(con), kde con znamená vytvorenie spojenia medzi systémom R a databázou, z ktorej chceme importovať. Tomuto spojeniu rozumejte ako “mostu”, alebo “linke”, po ktorej systém R importuje údaje, ktoré si určíme z databázy Access. Príkaz sql.query slúži na zadanie priamo tej tabuľky alebo query, ktorú chceme importovať (kedže obyčajne databáza mdb obsahuje viac tabuliek a niekoľko query, tento krok je mimoriadne dôležitý a treba dbať, aby sme správne zadali parameter). Príkaz close(con) nám potom
Autor: PhDr.Marek Majdan, PhD.,
[email protected]
Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
“uzavrie” po importovaní potrebných údajov spojenie, ktoré sme vytvorili príkazom con. Zoberme si príklad databázy katka.mdb, ktorá sa nachádza priamo na pevnom disku D a obsahuje tabuľky nazvané tabulka1, tabulka2 a tabulka3, z ktorých potrebujeme importovať do systému R a analyzovať tabulku1. Tabulku1 chceme importovat do databázy R, ktorú nazveme katka. Nase príkazy potom budú vyzerať takto: library(RODBC) con<‐odbcConnectAccess("D:\katka.mdb") katka<‐sqlQuery(con,'select*from tabulka1') close(con) Príkazový riadok library(RODBC) je potrebný na aktivovanie balíka funkcií RODBC, ktorý obsahuje aj funkcie potrebné na importovanie mdb súborov. (balík je potrebné samozrejme predtým nainštalovať) Teraz máme importovanú tabulku1 zo súboru katka.mdb a je pripravená na ďalšiu analýzu a manipuláciu. Základný popis databázy (príkazy describe a summary) Predtým, než budeme ďalej analyzovať importované údaje, je potrebné overiť, či boli v poriadku importované a či sú úplné. Najjednoduchším spôsobom je použiť príkazy describe alebo summary (tieto príkazy Vám odporúčam priebežne používať počas analýzy, ako budete postupne vytvárať nové premenné a robiť štatistické testy). Príkaz describe K tomu, aby sme mohli používať príkaz describe, je najprv potrebné nainštalovať balík funkcií Hmisc (prvým príkazom v našom skripte potom bude library(Hmisc) , ktorý aktivuje daný balík. Príkaz má jednoduchú formu describe(katka), prípadne, ak chceme popísať len jednu premennú z databázy, použijeme formu describe(katka$nazov premennej) . V systéme R sa vo všeobecnosti použiva formát databáza$premenná na vyšpecifikovanie niektorej z premenných databázy, napr. ak chceme popísať premennú vek z databázy katka, použijeme formu describe(katka$vek). Výstup príkazu describe je nasledovný v prípade kontinuálnych premenných:
Autor: PhDr.Marek Majdan, PhD.,
[email protected]
Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ AGE n missing unique Mean .05 .10 .25 .50 .75 .90 .95 415 0 80 48.93 18.0 21.0 32.0 48.0 66.0 78.6 81.3 lowest : 1 7 12 14 15, highest: 88 89 90 96 102 a takýto v prípade kategorických premenných: sec.transport.coding n missing unique 1181 0 2 Yes (397, 34%), No (784, 66%) ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ n je symbol pre počet záznamov, missing je počet chýbajúcich záznamov, unique je počet kategórií, mean je priemerná hodnota a lowest a highest je 5 najnižších a 5 najvyšších hodnôt kontinuálnej premennej. Vytvorenie poddatabázy Poddatabázy sa v systéme R vytvárajú pomocou príkazu subset, ktorý je súčasťou základného balíka, to znamená, že na jeho používanie nie je potrebné inštalovať a aktivovať žiadny prídavný balík funkcií. Príkaz má formu: subset(x,podmienka) kde x je pôvodná databáza, z ktorej chceme poddatabázu vytvoriť a podmienka znamená podmienku na základe ktorej sa má daná poddatabáza vytvoriť. Vytváranie kategorických premenných V praxi sa často stretávame s potrebou kategorizovať kontinuálne údaje, napr. vytvoriť vekové kategórie. Na toto nám slúži príkaz ifelse, ktorý je opäť súčasťou základného balík a n ajeho použitie nie je potrebné inštalovať špeciálny balík. Príkaz má takúto formu: ifelse(podmienka,áno,nie) Podmienka znamená podmienku, na základe ktorej sa kategorizácia deje, za čiarkou potom nasleduje hodnota, akú má nadobúdať nová (kategorická) premenná v
Autor: PhDr.Marek Majdan, PhD.,
[email protected]
Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
prípade splnenia podmienky a potom nasleduje hodnota, akú má nadobúdať, ak podmienka nie je splnená. Ak chceme zadať viac podmienok (vytvoriť viac kategórií, potom hodnota, ktorú má premenná nadobúdať pôjde až za poslednú podmienku – viď príklad a vytvorenie premenných vek0 a vek1). Príklad Z databázy MS Acces, marek.mdb uloženej na disku D chceme do systému R importovať tabuľku nazvanú tab1. Našu databázu nazveme marekr.Náš skript bude vyzerať nasledovne: library(RODBC) con<‐odbcConnectAccess("D:\marek.mdb") marekr<‐sqlQuery(con,'select*from tab1') close(con) Po importovaní dát ich chceme popísať, takže použiveje príkazy describe a summary: library(Hmisc) summary(marekr) describe(marekr) Marekr obsahuje údaje, z ktorých chceme vytvoriť poddatabázu, ktorá bude obsahovať len pacientov, ktorí majú menej ako 40 rokov. Vek je v databáze uvedený pod premennou VEK. Vytvorenú poddatabázu chceme nazvať marekr40.Použijeme príkaz subset: marekr40<‐subset(marekr,AGE<40) Našu novovytvorenú databázu chceme popísať, opäť teda použijeme príkazy summary a describe: summary(marekr40) describe(marekr40) Ďalším krokom, ktorý sa rozhodneme spraviť je kategorizáci pacientov podľa veku. Chceme vytvoriť dve nové kategorické premenné: premennú vek, ktorú bude mať hodnotu 1, ak je pacient mladší ako 50 rokov a hodnotu 2, ak má 50 rokov alebo viac.
Autor: PhDr.Marek Majdan, PhD.,
[email protected]
Materiál určený výlučne pre potreby študentov verejného zdravotníctva FZSP TU
premennú vek1, ktorá má mať hodnotu 1, ak je vek0 od 0‐20 rokov, hodnotu 2, ak je medzi 21‐40 rokov a hodnotu 3, ak je 40 a viac rokov. Požijeme príkaz ifelse: marekr$vek0<‐ifelse(marekr$VEK<50,1,0) marekr$vek1<‐ifelse(marekr$VEK>=0 & marekr$VEK<=20,1, ifelse(marekr$VEK>20 & marekr$VEK<=40,2,3) Naša databáza marekr teraz obsahuje dve nové kategorické premnenné vek0 a vek1. Náš úplný skript potom bude vyzerať nasledovne: library(RODBC) library(Hmisc) con<‐odbcConnectAccess("D:\marek.mdb") marekr<‐sqlQuery(con,'select*from tab1') close(con) summary(marekr) describe(marekr) marekr40<‐subset(marekr,AGE<40) summary(marekr40) describe(marekr40) marekr$vek0<‐ifelse(marekr$VEK<50,1,0) marekr$vek1<‐ifelse(marekr$VEK>=0 & marekr$VEK<=20,1, ifelse(marekr$VEK>20 & marekr$VEK<=40,2,3)
Autor: PhDr.Marek Majdan, PhD.,
[email protected]