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

Práca s údajmi

Tradičná práca s databázou

Príklad

Vytvorme si údaje o výnosoch,výdavkoch a zisku firmy.

  Výnosy = c(100, 150, 400)
  Výdavky = c(170, 120, 160)
  Zisk = c(-70, 30, 240)

Spojíme ich do tabuľky.

firma <- data.frame(Výnosy,Výdavky,Zisk)
print(firma)

Pridáme si do tabuľky dodatočný stĺpec, ktorý obsahuje boolovské hodnoty, či firma generuje zisk alebo nie.

Generuje_zisk <- c(FALSE, TRUE,TRUE)
firma <- cbind(firma,Generuje_zisk)
print(firma)

Teraz si vyskúšame pridať do našej tabuľky riadok.

novy.riadok <- data.frame(Výnosy = 300, Výdavky = 480, Zisk = -180, Generuje_zisk = FALSE)

# Append
firma <- rbind(firma, novy.riadok)
print(firma)

Tabuľky v prostredí kableextra

library(knitr)
library(kableExtra)
kable(
  firma,
#  format,
digits = 2,
#  row.names = NA,
#  col.names = NA,
  align=c("l","c","l","r"),
  caption = "Toto je tabuľka"
#  label = NULL,
#  format.args = list(),
#  escape = TRUE,
 # ...
) %>%
      kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "center")
Toto je tabuľka
Výnosy Výdavky Zisk Generuje_zisk
100 170 -70 FALSE
150 120 30 TRUE
400 160 240 TRUE
300 480 -180 FALSE

Výber a triedenie

firma %>%
  filter(Výnosy > 150) %>%     
  arrange(desc(Výnosy)) %>%    
kable %>%
    kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "center"
  )
Výnosy Výdavky Zisk Generuje_zisk
400 160 240 TRUE
300 480 -180 FALSE

Zoskupenie a sumarizácia

firma %>%
  group_by(Generuje_zisk) %>%       
  summarise(                
    Priem.Výnos = mean(Výnosy),
    count = n()
  ) %>%
 kable(
    caption = "Priemerné Výnosy podľa premennej Generuje_zisk",
    col.names = c("Generuje zisk", "Priemer Výnos", "Počet"),
    align = "c"
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "center"
  )
Priemerné Výnosy podľa premennej Generuje_zisk
Generuje zisk Priemer Výnos Počet
FALSE 200 2
TRUE 275 2

Vytváranie novej premennej

firma %>%
  mutate(
    Kategória = case_when(      
      Zisk > 100 ~ "Výborný výsledok",
      Zisk > 0 ~ "Ziskový",
      Zisk >- 100 ~ "Strata",
      TRUE ~ "Veľká strata"
    ),
    Percento_zisku = round((Zisk / Výdavky) * 100, 1)   # tu je tvoja "druhá" premenná
  ) %>% 
  kable() %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"),
    full_width = FALSE,
    position = "center"
  )
Výnosy Výdavky Zisk Generuje_zisk Kategória Percento_zisku
100 170 -70 FALSE Strata -41.2
150 120 30 TRUE Ziskový 25.0
400 160 240 TRUE Výborný výsledok 150.0
300 480 -180 FALSE Veľká strata -37.5

Stĺpcový graf

Vytvoríme si stĺpcový graf, pomocou ktorého porovnáme zisky jednotlivých firiem.

ggplot(firma, aes(x = factor(1:nrow(firma)), y = Zisk, fill = Generuje_zisk)) +
  geom_bar(stat = "identity") +
  labs(
    title = "Zisk jednotlivých firiem",
    x = "Firma",
    y = "Zisk (€)",
    fill = "Generuje zisk"
  ) +
  theme_minimal()

LS0tCnRpdGxlOiAiVHJldGlhIMO6bG9oYSIKYXV0aG9yOiAnIE1pcm9zbGF2YSBNZWR2ZWNrw6EgIDxicj4nCmRhdGU6ICJTZXB0ZW1iZXIgMjAyNSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdGhlbWU6IHVuaXRlZAogICAgaGlnaGxpZ2h0OiB0YW5nbwogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIGRmX3ByaW50OiBwYWdlZAplZGl0b3Jfb3B0aW9uczoKICBtYXJrZG93bjoKICAgIHdyYXA6IDcyCi0tLQoKYGBge3J9CmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICAgIGVjaG8gPSBUUlVFLAogICAgbWVzc2FnZSA9IEZBTFNFLAogICAgd2FybmluZyA9IEZBTFNFCikKYGBgCgojIFByw6FjYSBzIMO6ZGFqbWkKCiMjIFRyYWRpxI1uw6EgcHLDoWNhIHMgZGF0YWLDoXpvdQojIyMgUHLDrWtsYWQKVnl0dm9ybWUgc2kgw7pkYWplIG8gdsO9bm9zb2NoLHbDvWRhdmtvY2ggYSB6aXNrdSBmaXJteS4KYGBge3J9CiAgVsO9bm9zeSA9IGMoMTAwLCAxNTAsIDQwMCkKICBWw71kYXZreSA9IGMoMTcwLCAxMjAsIDE2MCkKICBaaXNrID0gYygtNzAsIDMwLCAyNDApCmBgYApTcG9qw61tZSBpY2ggZG8gdGFidcS+a3kuIApgYGB7cn0KZmlybWEgPC0gZGF0YS5mcmFtZShWw71ub3N5LFbDvWRhdmt5LFppc2spCnByaW50KGZpcm1hKQpgYGAKUHJpZMOhbWUgc2kgZG8gdGFidcS+a3kgZG9kYXRvxI1uw70gc3TEunBlYywga3RvcsO9IG9ic2FodWplIGJvb2xvdnNrw6kgaG9kbm90eSwgxI1pIGZpcm1hIGdlbmVydWplIHppc2sgYWxlYm8gbmllLiAKYGBge3J9CkdlbmVydWplX3ppc2sgPC0gYyhGQUxTRSwgVFJVRSxUUlVFKQpmaXJtYSA8LSBjYmluZChmaXJtYSxHZW5lcnVqZV96aXNrKQpwcmludChmaXJtYSkKYGBgClRlcmF6IHNpIHZ5c2vDusWhYW1lIHByaWRhxaUgZG8gbmHFoWVqIHRhYnXEvmt5IHJpYWRvay4gCmBgYHtyfQpub3Z5LnJpYWRvayA8LSBkYXRhLmZyYW1lKFbDvW5vc3kgPSAzMDAsIFbDvWRhdmt5ID0gNDgwLCBaaXNrID0gLTE4MCwgR2VuZXJ1amVfemlzayA9IEZBTFNFKQoKIyBBcHBlbmQKZmlybWEgPC0gcmJpbmQoZmlybWEsIG5vdnkucmlhZG9rKQpwcmludChmaXJtYSkKYGBgCiMjIyBUYWJ1xL5reSB2IHByb3N0cmVkw60ga2FibGVleHRyYQoKYGBge3J9CmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKa2FibGUoCiAgZmlybWEsCiMgIGZvcm1hdCwKZGlnaXRzID0gMiwKIyAgcm93Lm5hbWVzID0gTkEsCiMgIGNvbC5uYW1lcyA9IE5BLAogIGFsaWduPWMoImwiLCJjIiwibCIsInIiKSwKICBjYXB0aW9uID0gIlRvdG8gamUgdGFidcS+a2EiCiMgIGxhYmVsID0gTlVMTCwKIyAgZm9ybWF0LmFyZ3MgPSBsaXN0KCksCiMgIGVzY2FwZSA9IFRSVUUsCiAjIC4uLgopICU+JQogICAgICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgZnVsbF93aWR0aCA9IEZBTFNFLAogICAgcG9zaXRpb24gPSAiY2VudGVyIikKYGBgCiMjIyMgVsO9YmVyIGEgdHJpZWRlbmllCmBgYHtyfQpmaXJtYSAlPiUKICBmaWx0ZXIoVsO9bm9zeSA+IDE1MCkgJT4lICAgICAKICBhcnJhbmdlKGRlc2MoVsO9bm9zeSkpICU+JSAgICAKa2FibGUgJT4lCiAgICBrYWJsZV9zdHlsaW5nKAogICAgYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksCiAgICBmdWxsX3dpZHRoID0gRkFMU0UsCiAgICBwb3NpdGlvbiA9ICJjZW50ZXIiCiAgKQpgYGAKIyMjIyBab3NrdXBlbmllIGEgc3VtYXJpesOhY2lhCmBgYHtyfQpmaXJtYSAlPiUKICBncm91cF9ieShHZW5lcnVqZV96aXNrKSAlPiUgICAgICAgCiAgc3VtbWFyaXNlKCAgICAgICAgICAgICAgICAKICAgIFByaWVtLlbDvW5vcyA9IG1lYW4oVsO9bm9zeSksCiAgICBjb3VudCA9IG4oKQogICkgJT4lCiBrYWJsZSgKICAgIGNhcHRpb24gPSAiUHJpZW1lcm7DqSBWw71ub3N5IHBvZMS+YSBwcmVtZW5uZWogR2VuZXJ1amVfemlzayIsCiAgICBjb2wubmFtZXMgPSBjKCJHZW5lcnVqZSB6aXNrIiwgIlByaWVtZXIgVsO9bm9zIiwgIlBvxI1ldCIpLAogICAgYWxpZ24gPSAiYyIKICApICU+JQogIGthYmxlX3N0eWxpbmcoCiAgICBib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgIGZ1bGxfd2lkdGggPSBGQUxTRSwKICAgIHBvc2l0aW9uID0gImNlbnRlciIKICApCmBgYAojIyMjIFZ5dHbDoXJhbmllIG5vdmVqIHByZW1lbm5lagpgYGB7cn0KZmlybWEgJT4lCiAgbXV0YXRlKAogICAgS2F0ZWfDs3JpYSA9IGNhc2Vfd2hlbiggICAgICAKICAgICAgWmlzayA+IDEwMCB+ICJWw71ib3Juw70gdsO9c2xlZG9rIiwKICAgICAgWmlzayA+IDAgfiAiWmlza292w70iLAogICAgICBaaXNrID4tIDEwMCB+ICJTdHJhdGEiLAogICAgICBUUlVFIH4gIlZlxL5rw6Egc3RyYXRhIgogICAgKSwKICAgIFBlcmNlbnRvX3ppc2t1ID0gcm91bmQoKFppc2sgLyBWw71kYXZreSkgKiAxMDAsIDEpICAgIyB0dSBqZSB0dm9qYSAiZHJ1aMOhIiBwcmVtZW5uw6EKICApICU+JSAKICBrYWJsZSgpICU+JQogIGthYmxlX3N0eWxpbmcoCiAgICBib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAiaG92ZXIiLCAiY29uZGVuc2VkIiwgInJlc3BvbnNpdmUiKSwKICAgIGZ1bGxfd2lkdGggPSBGQUxTRSwKICAgIHBvc2l0aW9uID0gImNlbnRlciIKICApCmBgYAojIyMgU3TEunBjb3bDvSBncmFmIApWeXR2b3LDrW1lIHNpIHN0xLpwY292w70gZ3JhZiwgcG9tb2NvdSBrdG9yw6lobyBwb3Jvdm7DoW1lIHppc2t5IGplZG5vdGxpdsO9Y2ggZmlyaWVtLgpgYGB7cn0KZ2dwbG90KGZpcm1hLCBhZXMoeCA9IGZhY3RvcigxOm5yb3coZmlybWEpKSwgeSA9IFppc2ssIGZpbGwgPSBHZW5lcnVqZV96aXNrKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgbGFicygKICAgIHRpdGxlID0gIlppc2sgamVkbm90bGl2w71jaCBmaXJpZW0iLAogICAgeCA9ICJGaXJtYSIsCiAgICB5ID0gIlppc2sgKOKCrCkiLAogICAgZmlsbCA9ICJHZW5lcnVqZSB6aXNrIgogICkgKwogIHRoZW1lX21pbmltYWwoKQpgYGAKCgo=