knitr::opts_chunk$set(
    echo = TRUE,
    message = FALSE,
    warning = FALSE
)

Tradičná ovocná bublanina

Popis

Ľahký a nadýchaný koláč, ktorý krásne vonia po vanilke a letnom ovocí. Bublanina je klasika slovenskej kuchyne — rýchla na prípravu a ideálna, keď máš po ruke čerstvé čerešne, jahody alebo hocijaké bobuľové ovocie. Skvelá ku káve alebo ako sladká desiata pre celú rodinu

Suroviny

Na prípravu bublaniny budeme potrebovať nasledovné:

  Položka = c("cukor", "vajce", "mlieko", "olej", "polohrubá múka", "PDP")
  Počet = c(300, 6, 150, 150, 435, 1)
  Jednotka = c("g", "ks", "ml", "ml", "g", "ks")
udaje <- data.frame(Položka,Počet,Jednotka)
print(udaje)
##          Položka Počet Jednotka
## 1          cukor   300        g
## 2          vajce     6       ks
## 3         mlieko   150       ml
## 4           olej   150       ml
## 5 polohrubá múka   435        g
## 6            PDP     1       ks

Vysvetlenie: DataFrame má tri stĺpce: Položka, Počet a Jednotka. Niektoré operácie s údajmi organizovanými v .data.frame. sú uvedené nasledovne

print(udaje$Položka)           # takto adresujeme jednotlivé premenné v data.frame
## [1] "cukor"          "vajce"          "mlieko"         "olej"          
## [5] "polohrubá múka" "PDP"
print(udaje[,2:3])               # vypisanie druheho a tretieho stlpca tabulky
##   Počet Jednotka
## 1   300        g
## 2     6       ks
## 3   150       ml
## 4   150       ml
## 5   435        g
## 6     1       ks
print(udaje[1,3])              # vypisanie jednej bunky tabulky
## [1] "g"
summary(udaje)                   # zakladna deskriptivna statistika celej tabulky
##    Položka              Počet         Jednotka        
##  Length:6           Min.   :  1.0   Length:6          
##  Class :character   1st Qu.: 42.0   Class :character  
##  Mode  :character   Median :150.0   Mode  :character  
##                     Mean   :173.7                     
##                     3rd Qu.:262.5                     
##                     Max.   :435.0

Rozdelenie surovín na sypké:

Sypké <- c(TRUE, FALSE, FALSE, FALSE, TRUE, TRUE)
udaje <- cbind(udaje,Sypké)
print(udaje)
##          Položka Počet Jednotka Sypké
## 1          cukor   300        g  TRUE
## 2          vajce     6       ks FALSE
## 3         mlieko   150       ml FALSE
## 4           olej   150       ml FALSE
## 5 polohrubá múka   435        g  TRUE
## 6            PDP     1       ks  TRUE
udaje$Sypké <- NULL
udaje$MaAuto <- NULL 

Tabuľky

library(knitr)
library(kableExtra)
kable(
  udaje,
#  format,
digits = 2,
#  row.names = NA,
#  col.names = NA,
  align=c("l","c","l","r"),
  caption = "Tabuľka"
#  label = NULL,
#  format.args = list(),
#  escape = TRUE,
 # ...
) %>%
      kable_styling(bootstrap_options = c("bordered", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "center")
Tabuľka
Položka Počet Jednotka
cukor 300 g
vajce 6 ks
mlieko 150 ml
olej 150 ml
polohrubá múka 435 g
PDP 1 ks

Tidyverse - moderná práca s údajmi

Tidyverse je súbor knižníc, ktoré majú zjednodušiť prácu s údajmi. Majú jednotný komunikačný štandard, vzájomne sa doplňujú.

# Load tidyverse
library(tidyverse)

dplyr - pre manipuláciu s údajmi

.dplyr. poskytuje základné možnosti manipulácie s údajmi, ako napr.:

  1. filter(): vyberá riadky

  2. select(): vyberá stĺpce

  3. mutate(): vytvára nové stĺpce tabuľky

  4. arrange(): triedi riadky

  5. summarise(): sumarizuje

V nasledovnej ukážke využijeme tzv. .pipes. %>% alebo %<% umožňuje posielať výsledky z jednej funkcie priamo do volanie nasledovnej funkcie. To umožňuje ľahšiu čitateľnosť kódov, konvencia sa ujala a má široké použitie.

Výber a triedenie surovín s vysokým podielom v recepte

udaje %>%
  filter(Počet > 200)%>%   # vyberá suroviny s počtom vyšším ako 200
  arrange(desc(Počet))%>%  # vysledny subor triedi zostupne podla premennej Počet
kable %>%
    kable_styling(
    bootstrap_options = c("bordered", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "center"
  )
Položka Počet Jednotka
polohrubá múka 435 g
cukor 300 g

Zoskupenie a sumarizácia

udaje %>%
  group_by(Jednotka) %>%    # zoskupí podľa stĺpca Jednotka
  summarise(
    Priem.Počet = mean(Počet, na.rm = TRUE),  # priemer počtu
    count = n()                                # počet záznamov v skupine
  ) %>%
  kable(
    caption = "Priemerný počet podľa Jednotky",
    col.names = c("Jednotka", "Priemer Počet", "Počet"),
    align = "c"
  ) %>%
  kable_styling(
    bootstrap_options = c("bordered", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "center"
  )
Priemerný počet podľa Jednotky
Jednotka Priemer Počet Počet
g 367.5 2
ks 3.5 2
ml 150.0 2

Vytváranie novej premennej

udaje_novy <- udaje %>%
  mutate(
    # kategorizácia podľa Počet
    Trieda = case_when(
      Počet >= 300 ~ "A",
      Počet >= 200 ~ "B",
      Počet >= 100 ~ "C",
      TRUE ~ "D"
    ),
    # nový stĺpec: dvojitá dávka
    DvojitáDávka = Počet * 2
  )

# Zobrazenie tabuľky s farebným stĺpcom
udaje_novy %>%
  kable(caption = "Tabuľka surovín s dvojitou dávkou") %>%
  kable_styling(
    bootstrap_options = c("hover","bordered","responsive"),
    full_width = FALSE,
    position = "center",
    font_size = 14
  ) %>%
  row_spec(0, bold = TRUE, color = "white", background = "black") %>%  
  column_spec(ncol(udaje_novy), bold = TRUE, color = "white", background = "green")
Tabuľka surovín s dvojitou dávkou
Položka Počet Jednotka Trieda DvojitáDávka
cukor 300 g A 600
vajce 6 ks D 12
mlieko 150 ml C 300
olej 150 ml C 300
polohrubá múka 435 g A 870
PDP 1 ks D 2

Porovnanie normálnej a dvojitej dávky

library(ggplot2)
library(tidyr)
library(dplyr)


udaje_long <- udaje_novy %>%
  select(Položka, Počet, DvojitáDávka) %>%
  pivot_longer(cols = c(Počet, DvojitáDávka),
               names_to = "TypDavky",
               values_to = "Mnozstvo")

# Graf s bodmi
ggplot(udaje_long, aes(x = Položka, y = Mnozstvo, color = TypDavky)) +
  geom_point(size = 4) +  # body namiesto čiar
  scale_color_manual(values = c("Počet" = "red", "DvojitáDávka" = "green")) +
  theme_minimal() +
  labs(title = "Porovnanie",
       x = "Surovina",
       y = "Množstvo",
       color = "Typ dávky")