Import dat

V tomto textu se podíváme na import a export externích dat do R resp. z R.

Import dat do R nejčastěji potřebujeme provést z formátu xls nebo csv. Formát xls, čili formát Excelu, ovšem může činit potíže. Excelovské soubory mohou totiž obsahovat různá speciální formátování či funkce, s nimiž má R buď problém si poradit, nebo je minimálně potřeba je při importu nějak ošetřit. Nejjednodušší je proto převést excelovský soubor do formátu csv a teprve ten pak načíst do R.

Pro převod excelovského souboru do formátu csv stačí při ukládání souboru vybrat možnost Uložit jako CSV (textový soubor s oddělovači).

Ani uložením do formátu csv ještě nemáme úplně vyhráno. Zkratka csv znamená comma-separated values, čili hodnoty oddělené čárkami. Standardně v anglofonních zemích tyto soubory vypadají tak, že obsahují řady čísel oddělených čárkami, a pokud jsou tato čísla desetinná, používá se desetinná tečka.

V České republice ovšem používáme desetinnou čárku, nikoli tečku. Je tedy zřejmé, že čárky nemohou sloužit zároveň k oddělování čísel od sebe, proto se používá v „českém“ csv souboru k oddělování hodnot středník. Právě takový soubor vznikne i v případě, že uložíme (na českém počítači s českými MS Office) excelovský soubor jako csv.

Je tedy dobré vědět, s jakým typem csv souboru máme co do činění.

· pro soubory, kde jsou oddělovači čárky, používáme pro načtení do R funkci read.csv

· pro soubory, kde jsou oddělovači středníky, používáme pro načtení do R funkci read.csv2

Načtení dat provedeme následovně. Nejprve musíme nastavit pracovní adresář. Stávající pracovní adresář zjistíme příkazem getwd(). Zkratka wd znamená working directory.

> getwd()

[1] "C:/Users/lenka/Documents"

Pokud do tohoto adresáře uložíme požadovaný soubor, nemusíme již nic dalšího dělat a můžeme jej rovnou načíst. Pokud chceme používat jiný adresář, musíme nejprve pracovní adresář přenastavit příkazem setwd(), například takto.

> setwd("C:/Users/lenka/Desktop")

Jakmile máme data uložena na požadovaném místě, můžeme je již načíst, a to příkazem read.csv nebo read.csv2 (viz výše). Pokud by se například potřebný soubor jmenoval data, načteme jej takto:

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

Někdy se může hodit i načtení dat ze schránky. Tedy: jdeme typicky do Excelu. Označíme si nějaká data a zkopírujeme je prostřednictvím ctrl+c do schránky. Pak zadáme následující příkaz.

> moje_data = read.table("clipboard", sep = "\t", dec = ",", header = FALSE)

Tím R říkáme, že má načíst data ze schránky (clipboard), že oddělovačem mezi daty (sep) má být tabulátor, desetinnou čárkou (dec) má být čárka (nikoli například tečka) a že data neobsahují záhlaví. Při zadání header = TRUE by se automaticky z prvního řádku vytvořilo záhlaví.

Kopírujeme-li takto data z Excelu, je oddělovačem prakticky vždy tabulátor. V jiných případech může být ale oddělovačem i středník, čárka apod. – v tom případě zadáme do uvozovek příslušný symbol.

Obě funkce – read.csv i read.csv2 fungují v zásadě stejně jako právě použitá funkce read.table, pouze mají přednastavené defaultní hodnoty pro typ oddělovačů a typ desetinných čárek. Tedy například funkce read.csv2 má nastaveno dec na čárku a sep na středník. Toto defaultní nastavení lze ovšem přepsat, pokud bychom měli například atypický formát (csv soubor s desetinnými tečkami a středníky jako oddělovači apod.).

Export dat

Export dat funguje zcela stejně jako import dat, proto se mu již budeme věnovat jen stručně. Prakticky jediným rozdílem je, že příslušné funkce místo read obsahují write.

Například následující funkce zkopíruje data frame s názvem moje_data do schránky tak, že když je pak vložíme do Excelu, budou mít tabulátory jako oddělovače, čísla budou obsahovat desetinné čárky a data nebudou mít záhlaví.

write.table(moje_data, "clipboard", sep = "\t", dec = ",", header = FALSE)

Následující funkce uloží data frame s názvem moje_data do souboru data.csv (do pracovního adresáře).

read.csv2(moje_data, "data.csv")

Autor článku: Lenka Fiřtová