[1] NA
Zpracovávání výzkumných dat pomocí jazyka R
kurz s cílem poskytnout účastníkům solidní základy práce s R za účelem následné práce s vědeckými daty
zakončení mikrocerfikátem: oficiální certifikát uznávaný napříč EU s jasně definovanými dovednostmi
pokračování: do budoucna jsou plánována jednorázová školení na specifická pokročilá témata o která bude zájem
manažer repozitáře pro výzkumná data na UK
výuka R v rámci programu Charleston, Letní školy pro data stewardy, a akcí pod záštitou CpOS
datová práce všeho druhu
datová analýza pro Akademii Věd
konzultace pro dizertační, diplomové a bakalářské práce
KPZ (kolega poslední záchrany)
popularizačně naučné přednášky nejen o datové analýze
úvodní opakování z předchozí hodiny
výklad nové látky
cvičení z probrané látky
řešení “chuťovek” z minulých hodin a z dotazů
zadání domácího úkolu
Před každou hodinou (maximálně pondělí ráno daného týdne) bude do výukových materiálů nahrána prezentace k dané lekci, stejně tak veškerá potřebná data.
Pokud bude potřeba abyste si pro práci v hodině nějaká data stáhli, učiňte tak prosím a uložte si je do dedikované složky na vašem počítači.
Doporučuji mít prezentaci během hodiny otevřenou pro nahlížení a kopírování kódu.
Pokud si chcete psát ruční poznámky, zmáčknutí “e” a poté tisk obrazovky vám umožní vytisknout si snímky prezentace v PDF.
jméno
obor
zkušenosti s programováním (potažmo R)
zkušenosti se statistikou
co se chcete naučit
Open source programovací jazyk určený ke statistické analýze a datové vizualizaci.
v současnosti jeden ze standardů pro datovou analýzu ve vědecké sféře
aktivně využívaný, spravovaný a uržovaný globální vědeckou komunitou
nepřeberné množství specializovaných rozšíření
R
RStudio
IDE - vývojářské prostředí
usnadňuje práci s R
Skript: místo pro psaní kódu
Konzole: samotné R, místo výpočtů a zobrazování výsledků či chybových hlášek
Terminal: psaní přímo do příkazové řádky
Globální prostředí: přehled uložených proměných
History: historie spuštěného kódu
Files: soubory v daném adresáři se kterými R může pracovat
Plots: místo pro zobrazování grafů
Packages: plug-iny pro R
Help: nápověda
integer
double
1.87, 0.3679
Inf
-Inf
taktéž popisovány jako boolean
TRUE
FALSE
Přestože s komplexním číslem můžeme provádět aritmetické operace, R jej nebere jako numeric hodnotu!
NaN je naopak bráno jako numeric hodnota
R umožňuje uložit si informace pomocí proměnných.
Místo toho, abyste poté museli informaci znovu definovat, tak si můžete zavolat proměnnou.
[1] 1066654352
Uložené proměnné jsou vždy vypsané v globálním prostředí.
Hodnota se uloží pomocí následujícího postupu:
název proměnné <- hodnota
R čte zpravidla zleva do prava, proto je možné i hodnota -> proměnná
Jaké proměnné mám uložené v globálním prostředí?
Seznam proměnných, které jsou v R uložené a se kterými můžete pracovat, naleznete buď v poli Environment v pravém horním rohu.
Můžete také ale využít funkce objects(). Ta do konzole vypíše seznam všech uložených hodnot.
Totožný výsledek získáte i pomocí funkce ls().
Je možné přepsat hodnoty?
Ano, pokud uděláte chybu v zápise či potřebujete změnit specifickou proměnnou či její část, není třeba ji mazat - stačí ji přepsat.
Co když chci hodnotu ale i tak smazat?
Funkce rm() umožňuje mazat uložené proměnné z globálního prostředí.
rm() - smaže VŠE
rm(název proměnné) - smaže specifickou proměnnou
mezera mezi slovy
začínat symbolem
začínat číslicí
Pozor na diakritiku!
Ulož do proměnné x číslo, do y text a do z boolean.
Jaký bude výsledek následujícího kódu?
Jaký bude výsledek následujícího kódu?
+ - sčítání a odčítání
* násobení
/ dělení
%% zbytek po dělení
%/% dělení bez zbytku
** nebo ^ umocnění
<= >= menší/větší nebo rovno
Logické operátory lze použít při výběru (vyber x NEBO y, x A y) či spojování podmínek, ale také umí vracet boolean hodnoty.
& a, taktéž, zároveň
| nebo
[1] FALSE TRUE TRUE FALSE
%in% je v, nachází se v
== je přesně
! není, not, negace
Jaký zbytek nám zbyde po vydělení násobku devíti a desíti číslem čtyři?
Jaký bude výsledek tohoto výpočtu?
Na dopravní hřiště mohou pouze děti ve věku 15+, mladší pouze s povolením rodičů. Může toto dítě na hřiště?
Frantovi je 53 let. Chce si koupit jízdenku, u které je možnost slevy pro seniory 65+ či děti a studenty až do 26 let včetně.
Ověř, zda má Franta na tuto slevu nárok.
Studentstvo může získat stipendium za následujících podmínek: mají průměr známek menší než 1.8 a zároveň absolvovali alespoň 80 % docházky, nebo reprezentují školu na soutěžích.
Saša má průměr 1.7, zameškáno 3 hodin z 10 a pravidelně vyhrává biologickou olympiádu.
Zjisti, zda má Saša právo na stipendium.
Uzavírají se známky na konci semestru. Zápočet dostanou pouze ti, kteří mají dosavadní hodnocení na lepším stupni než 5 a v posledním testu získali jiný počet než nula bodů. Pokud tyto podmínky nesplňují, tak zápočet mohou dostat i tehdy pokud vypracovali seminární práci navíc a v písemce měli alespoň 50 bodů.
Julie má dosavadní hodnocení sice na 5, aní písemka se jí nepovedla a měla pouze 17 bodů. Napsala ale velmi povedenou semestrální práci na téma kyberbezpečnosti ve Vietnamu.
Dostane Julie zápočet?
R je case sensitive!
Používejte co chcete ale buďte konzistentní.
Který styl se vám používá nejsnadněji? U kterého děláte nejvíc chyb?
Jaké jsou zvysklosti ve vašem oboru/laboratoři?
Možné styly zápisu:
camelCase
PascalCase
snake_case
kebab-dash
a jiné
# vše co je za hash symbolem počítač ignoruje
Ctrl + Shift + C po výběru více linek kódu je všechny přemění na komentář.
Pište si poznámky, ale zase to nepřežeňte - není to román.
Pokud chcete v skriptu načíst datasety a pak s nimi pracovat, je potřeba mít určené, z jaké složky má R datasety tahat - v jakém prostředí se R pohybuje.
Nastavení je možné buď skrz Session > Set working directory a nebo skrz setwd() funkci.
Caution
Pozor, při použití setwd() funkce je třeba nadefinovat přesně cestu v počítači (absolutní cestu) jak se má R ke složce dostat!
V jaké složce se nyní pohybujete lze zjistit pomocí funkce getwd().
[1] "C:/Users/Lucie Hošková/Desktop/introR_CUNI/materialy/1_uvod/01_prezentace"
Nastavení pracovního adresáře ovlivňuje i další funkcionality R. Například, při ukládání skriptů se automaticky vybere jako možnost uložení právě složka pracovního adresáře.
Seznam souborů které má v nastaveném adresáři R dosupné naleznete bud’ v okně Files, nebo pomocí funkce list.files().
[1] "_extensions" "_quarto.yml"
[3] "01_prezentace.html" "01_prezentace.qmd"
[5] "01_prezentace.rmarkdown" "01_prezentace.Rproj"
[7] "01_prezentace_cache" "images"
[9] "vozidla.RData"
Jak vidíte, soubor nám vypíše dostupné soubory a složky v nastaveném pracovním adresáři. Co když se ale v něm chci podívat co je uvnitř specifické složky? K tomu je potřeba ve funkci definovat nejenom název složky, ale i to, kde se tato složka nachází.
[1] "clipboard-1044733788.png" "clipboard-1074189953.png"
[3] "clipboard-3339902769.png" "clipboard-358450353.png"
[5] "clipboard-4231777987.png" "clipboard-516070855.png"
[7] "clipboard-596025863.png" "transform-logical.png"
Co znamená tečka v ./images?
./v kódu určuje, že se složka images nachází přímo v námi určeném pracovním adresáři.
Jedná se o takzvanou relativní cestu - k tomu si řekneme něco víc v sekci Absolutní vs. relativní cesta.
list.files(./images)?Co znamená text, kolem kterého nejsou uvozovky?
Text, kolem kterého nejsou uvozovky značí proměnnou (a nebo funkci či její argument, ale k tomu příště).
R potřebuje znát popis specifické cesty k dané složce. A jelikož popisek je ve své podstatě textový řetezec, musíme ho mít v uvozovkách - tak se v R označuje text.
"C:/Users/Jana/Desktop/vyzkum/M433/data/pribice.csv"
"./data/pribice.csv"
Relativní cesta odkazuje na soubor uvnitř specifického pracovního adresáře, nikoliv přímo na místo v počítači jako absolutní cesta.
Doporučuji absolutní cestu když už používat, tak pouze při nastavování setwd(). Sice lze teoreticky nahrávat soubory a provádět jiné akce uvnitř pracovního adresáře i pomocí absolutní cesty, ale jakmile by se například složka ve které se pracuje kamkoliv posunula, tak by absolutní cesta přestala fungovat.
Vytvořte si složku s jménem pokusnaSlozka na náhodném místě ve svém počítači. Zkuste si sami pomocí funkce setwd()a absolutní cesty ručně nastavit pracovní adresář do této lokace.
Vytvořte si v pokusnaSlozka sérii podsložek, třeba až do třetí či páté úrovně (složka x ve složce y co je ve složce z…) a do finální z nich si nahrajte několik náhodných souborů. Vypište jejich seznam pomocí funkce list.files().
Co kdybychom chtěli, aby se nám všechny naše skripty a jejich výsledky automaticky ukládaly do a tahaly rovnou z jednoho specifického adresáře bez potřeby ho při každém otevření RStudia nastavovat, a který bychom navíc mohli jednoduše vzít a přesunout či ho někomu zazipovaný poslat?
Toho můžete docílit pomocí vytvoření RProjektu.
RProjekt vytvoří “izolované” prostředí, kdy všechny vaše soubory uvnitř tohoto adresáře budou svázané dohromady, budou se vám automaticky znovu nahrávat uložené proměnné bez nutnosti opakovaného spouštění kódu, a hlavně k nim vždy bude relativní, nikoliv absolutní cesta = celý projekt si můžete přesouvat mezi složkami či počítači bez potřeby nastavování working directory.
V základním nastavení RProjekty automaticky ukládají a následně nahrávají uložené proměnné zpět do globálního prostředí. Není proto potřeba při každém otevření projektu v RStudiu celý skript projíždět znovu a všechno znovu nahrávat. Je ovšem možné si uložit vybranné proměnné i ručně.
Objekt RData v sobě obsahuje informace o jednotlivých proměnných. Do globálního prostředí se nahrají funcí load().
Můžete svým kolegům tak například poslat již vyčištěná a připravená data, bez toho aby si sami museli nahrávat původní tabulku a provádět na ní veškeré kontroly.
Nedílnou součástí kódu v R jsou takzvané funkce. Jedná se o příkazy, které provedou specifickou akci za vámi definovaných podmínek.
název funkce(název argumentu = parametry argumentu)
Pomocí funkce seq vygeneruj sekvenci s rozestupem po 3 od 10 do 20.
Co bude výsledkem následujícího kódu?
Ano; bez definování názvu argumentu se pracuje s jeho pořadím.
Je pořadí argumentů důležité? Ovlivní výsledek?
Pozor!
Na pořadí argumentu nezáleží, dokud jasně definujeme k jakému argumentu parametr patří.
Jaký bude výsledek těchto kódů? Jsou totožné?
= a <-Možná jste se setkali s tím, že někdo zapisuje proměnné pomocí operátoru =. Funguje to?
Proč se proto místo toho používá <- ?
R umožňuje provádět akce uvnitř “jiných akcí”
V tomto případě určujeme argument na první pozici, a zároveň jeho hodnotu ukládáme do proměnné osobaID.
Co bude výsledkem následujícího kódu?
Na jaké problémy zde narazíme?
osobaID_2 není argument funce rep
operátor = ve funkci neznamená přiřazení, ale určení argumentu
osobaID_2 ve funkci rep neexistuje a proto nevznikne platný výsledeknedošlo k zapsání do globálního prostředí a tuto neexistující proměnnou proto nelze používat
Múžeme zapsat sekvenci od 1 do 10 s počtem hodnot 3 pomocí následujícího kódu? Pokud ne, opravte.
Bez spuštění kódu určete, jaký bude výsledek této funkce. Používejte nápovědu, zkuste si jednotlivé části rozepsat.
Múžeme zapsat sekvenci od 1 do 10 s počtem hodnot 3 pomocí následujícího kódu? Pokud ne, opravte.
Ne, jelikož argument na třetí pozici v této funkci není length.out, který určuje délku sekvence, ale by, který určuje periodu.
Čtěte dokumentaci pozorně!
R dokumentace je psana mnoha lidmi a nemusí být vždy konzistentní.
Bez spuštění následujícího kódu určete, jaký bude výsledek této funkce. Používejte nápovědu, zkuste si jednotlivé části rozepsat.
Funkce length zjišťuje, jaká je “délka”, jaký je počet hodnot. Potřebujeme proto spočítat, kolik hodnot nám vznikne jako výsledek funkce rep.
Funkce rep nám zde třikrát zopakuje výsledek daný funkcí seq.
Funkce seq(2, 10, 2) by zde mohla být zapsána na základě pořádí argumentů i jako seq(from = 2, to = 10, by = 2). Výsledkem je tak sekvence 2 4 6 8 10, která má pět čísel.
Třikrát se tedy zopakuje sekvence pěti čísel, což znamená že výsledek je patnáct.
Jak bylo vidět v přechozích částech, R umožňuje používat funkce uvnitř dalších funkcí.
Pro R je hlavně důležité, aby hodnoty v jednotlivých argumentech splňovaly jejich podmínky, nikoliv v jaké podobě tyto hodnoty do funkce vstupují.
V určité chvíli je ovšem dobré přemýšlet i o čitelnosti samotného kódu.
Který z následujících kódů je čitelnější?
nebo
Vytvořte RProjekt
Nahrajte do globálního prostředí proměnné z promenne.RData
Zjistěte, kolik zaměstnanců lze z rozpočtu platit po uvedenou dobu měsíců
plat = jaký je plat jednoho zaměstnance za jeden měsíc
pocetMesicu = kolik měsíců je potřeba všechny zaměstnance platit
rozpocet = jaký finanční rozpočet máte na dobu pocetMesicu k dispozici
RProjekt s výpočtem zašlete nejpozději do pátku před příští hodinou na lucie.hoskova@ruk.cuni.cz