Kamil Nešetřil

Správa a analýza dat o životním prostředí

Uživatelské nástroje

Nástroje pro tento web


Programovací jazyk R

Jazyk R

R (programovací jazyk) pro zpracování dat, který umí:

  • načíst data v jakémkoliv formátu (Excel, txt, web),
  • úpravy, zpracování, výpočty, statistika, strojové učení;
  • výstupy: grafy, tabulky, webové aplikace, dokumenty — 👁 Ukázky. Nebo 👁 ještě více grafů.

Jak jak (nainstalovat a) spustit

  1. Je nainstalován na (některých) počítačích v učebně A202: jak vlastní R, tak RStudio (IDE). ⚠️ Pozor, spusťte RStudio: Plocha/RStudio/rstudio.exe.
  2. Na soukromý počítač si nainstalujte nejprve R a pak RStudio. Pak spusťte RStudio (R se spustí „uvnitř“ RStudia, není třeba jej spouštět samostatně).
  3. Na počítač v učebně nainstalujte R, ale pro RStudio stáhněte .zip a rozbalte.

Začínáme!

# Do komentářů je možno napsat cokoliv:
# Поняатно? ⚠️ ⤷ 🚧 💾 ✂️ 🚦 🎬 📈 ▶️
# graf funkce sinus (od -π do 2π)
plot(sin, -pi, 2*pi)
 
# náhodná čísla podle normálního rozdělení
rnorm(400)        
hist(rnorm(400))  # histogram

🐭 Zkopírujte kód (text) a vložte jej do skriptu. Skript vytvoříte v RStudiu: (File → New File → R Script).

💡  Spuštění příkazu na řádce, kde máte kurzor (můžete tak postupně „projet“ celý skript):

  1. pomocí tlačítka Run či
  2. klávesové zkraty Ctrl+Enter.

¿? Nápověda: Textový kurzor do názvu funkce → F1


demo(graphics)    # sada příkladů
demo(persp)       # ⤷ mačkejte Enter v konzoli
# Kalkulačka
3+5*12
5^3         # mocnina 5³; taktéž 5**3
sqrt(4)     # odmocnina (square root)
sin(pi/4)
sqrt(sin(pi/4))
 
# Nebo raději uložíme mezivýsledek
# do proměnné:
vnitrek <- sin(pi/4)
 
# … a pak proměnnou využijeme:
sqrt(vnitrek)

Záleží na mezerách či nových řádcích (Enter)?

Pomocí ChatGPT

V jazyce R udělej graf českých olympijských medailí. 🐭

Jeden z kódů v jazyce RPROJ, který mi vygeneroval ChatGPT:

# Data for Czech gold medals in the last three Olympic Games
medals <- c(2, 1, 4)
years <- c("Rio 2016", "Pyeongchang 2018", "Tokyo 2021")
 
# Create a bar chart of gold medals
barplot(medals, 
  main = "Czech Gold Medals in Last Three Olympics",
  xlab = "Year and Host City",
  ylab = "Number of Gold Medals",
  names.arg = years,
  col = "steelblue",
  border = NA)

🐭 Požádejte ChatGPT, ať vám vytvoří graf. (Musí vám dodat i data.)

Některé funkce jsou dostupné v balíčcích (package, library), které se načítají pomocí funkce library(jméno_balíčku).1)

  • ChatGPT je jazykový model, a tak programo­vacím jazykům rozumí skvěle. Proč zadávat Googlu obecné dotazy, když je možné se zeptat Chatu GPT přímo?
  • Alternativa k ChatGPT: Google Gemini
  • RTutor – specializovaná webová aplikace pro generování kódu v R pomocí AI, která obsahuje pěkné uživatelské rozhraní a příklady dat i kódu.
  • ChatGPT přímo v RStudiu: mlverse/chattr

💡 Obdobný graf (avšak se spolehlivými daty) snáze a elegantněji vytvoří WolframAlpha.

Smyslem těchto ukázek bylo demonstrovat snadnost použití programovacího jazyka, nikoliv jeho všechny možnosti. Výhodou programovacího jazyka (na rozdíl od GUI) je, že v něm můžete „naprogramovat cokoliv“.


Co jsme již dělali v Excelu

Zdrojová data

library(readr) # Načíst knihovnu funkcí.
 
osoby <- read.csv("https://dataearth.cz/lib/exe/fetch.php/it/ra/osoby.csv",
                  fileEncoding="UTF-8-BOM")
 
# Histogram jen z jednoho sloupečku
hist(osoby$vek)
 
# Základní statistika
summary(osoby$vek) # Všechno dohromady
mean(osoby$vek)    # Nebo jednotlivě
max(osoby$vek)
min(osoby$vek)
 
# Nejmenší a největší hodnoty
serazeno <- osoby[order(osoby$vek), ] # Složitější už to nebude ;-)
head(serazeno)
tail(serazeno)
 
# Takto zobrazíme veliké množství bodů.
smoothScatter(osoby)
 
# Jen 1000, protože 47 tisíc řádků je příliš
# mnoho pro vykreslení všech bodů několikrát.
osoby_1000 <- head(osoby, n = 1000)
plot(osoby_1000)
 
# Kategorická veličina (histogram není možné sestavit)
table(osoby$pohlavi)
barplot(table(osoby$pohlavi))
 
# Časový průběh
vyskyty <- table(osoby$datum)
plot(vyskyty)
plot.ts(vyskyty) # 🚨 nezkoušel jsem to 𝒦𝒩

TBD 🐭 Složitější: Join, agregace podle krajů a pohlaví, denormalizace (kontingenční tabulka), ggplot2, ggsave()

S prvotním načtením dat vám pomůže RStudio:
RStudio – panel vpravo nahoře.
Vygeneruje kód, který pak dále používáte.


R pro obrazová data, radiologii a zdravotnictví

Jak dál


1)
Když funkce vrací chybu, tak balíček není nainstalovaný. Nainstalujte jej tedy: Instalace balíčku (package, library) – v RStudiu vpravo
Poslední úprava: 31.10.2024