Majme údaje o krasokorčuliarkach, ktoré sa na posledných majstrovstvách sveta umiestnili na prvých desiatich priečkach.
Meno <- c("Kaori Sakamoto", "Isabeau Levito", "Chaeyeon Kim",
"Loena Hendrickx", "Kimmy Repond", "Lee Hae-In",
"Mone Chiba", "Hana Yoshida", "Livia Kaiser", "Amber Glenn")
Krajina <- c("JPN", "USA", "KOR", "BEL", "SUI", "KOR", "JPN", "JPN", "SUI", "USA")
Body <- c(222.96, 212.16, 203.59, 200.25, 196.02, 195.48, 195.46, 194.93, 187.24, 186.53)
# Vytvorenie data frame
krasokorculiarky <- data.frame(Meno, Krajina, Body)
# Zobrazenie
print(krasokorculiarky)
Tieto tri premenné nie sú zatiaľ nijako prepojené, predstavujú izolované stĺpce tabuľky. Do tabuľky ich spojíme nasledovne
Vysvetlenie: DataFrame má tri stĺpce: Meno, Krajina a Body. Niektoré operácie s údajmi organizovanými v .data.frame. sú uvedené nasledovne
[1] "JPN" "USA" "KOR" "BEL" "SUI" "KOR" "JPN" "JPN" "SUI" "USA"
[1] 199.462
[1] "Kaori Sakamoto"
Meno Krajina Body
Length:10 Length:10 Min. :186.5
Class :character Class :character 1st Qu.:195.1
Mode :character Mode :character Median :195.8
Mean :199.5
3rd Qu.:202.8
Max. :223.0
Ak chceme pridať k tabuľke dodatočný stĺpec, potom to robíme nasledovne:
MaMedailu <- c(TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE)
krasokorculiarky <- cbind(krasokorculiarky,MaMedailu)
print(krasokorculiarky)
Pridali sme stlpec s informáciou, ktorá nám hovorí o tom, či si súťažiaca vybojovala medailu alebo nie. Ak chceme pridať riadok, potom
# New record (must match column order/types)
novy.riadok <- data.frame(Meno = "Anna Shcherbakova", Krajina = "RUS", Body = 184.50, MaMedailu = FALSE)
# Append
krasokorculiarky <- rbind(krasokorculiarky, novy.riadok)
print(krasokorculiarky)
library(knitr)
library(kableExtra)
Meno <- c("Kaori Sakamoto", "Isabeau Levito", "Chaeyeon Kim",
"Loena Hendrickx", "Kimmy Repond", "Lee Hae-In",
"Mone Chiba", "Hana Yoshida", "Livia Kaiser", "Amber Glenn")
Krajina <- c("JPN", "USA", "KOR", "BEL", "SUI", "KOR", "JPN", "JPN", "SUI", "USA")
Body <- c(222.96, 212.16, 203.59, 200.25, 196.02, 195.48, 195.46, 194.93, 187.24, 186.53)
MaMedailu <- c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)
krasokorculiarky <- data.frame(Meno, Krajina, Body, MaMedailu)
kable(
krasokorculiarky,
digits = 2,
align = c("l","c","r","c"),
caption = "Konečné výsledky MS 2024 v krasokorčuľovaní žien"
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE,
position = "center"
)
Meno | Krajina | Body | MaMedailu |
---|---|---|---|
Kaori Sakamoto | JPN | 222.96 | TRUE |
Isabeau Levito | USA | 212.16 | TRUE |
Chaeyeon Kim | KOR | 203.59 | TRUE |
Loena Hendrickx | BEL | 200.25 | FALSE |
Kimmy Repond | SUI | 196.02 | FALSE |
Lee Hae-In | KOR | 195.48 | FALSE |
Mone Chiba | JPN | 195.46 | FALSE |
Hana Yoshida | JPN | 194.93 | FALSE |
Livia Kaiser | SUI | 187.24 | FALSE |
Amber Glenn | USA | 186.53 | FALSE |
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ú.
.dplyr. poskytuje základné možnosti manipulácie s údajmi, ako napr.:
filter(): vyberá riadky
select(): vyberá stĺpce
mutate(): vytvára nové stĺpce tabuľky
arrange(): triedi riadky
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 následné triedenie
krasokorculiarky %>%
filter(Body > 200) %>% # vybera zaznamy s poctom bodov viac, ako 200
arrange(desc(Body)) %>% # vysledny subor triedi zostupne podla premennej Body
kable %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE,
position = "center"
)
Meno | Krajina | Body | MaMedailu |
---|---|---|---|
Kaori Sakamoto | JPN | 222.96 | TRUE |
Isabeau Levito | USA | 212.16 | TRUE |
Chaeyeon Kim | KOR | 203.59 | TRUE |
Loena Hendrickx | BEL | 200.25 | FALSE |
# Zoskupí and sumarizuje
krasokorculiarky %>%
group_by(Krajina) %>% # zoskupi zaznamy podla premennej MaAuto a vypocita za kazdu skupinu jej priemer Body
summarise( # a taktiez spocita pocetnosti oboch skupin
Priem.Body = mean(Body),
count = n()
) %>%
kable(
caption = "Priemerné Body podľa premennej Krajina",
col.names = c("Krajina", "Priemer Body", "Počet"),
align = "c"
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE,
position = "center"
)
Krajina | Priemer Body | Počet |
---|---|---|
BEL | 200.250 | 1 |
JPN | 204.450 | 3 |
KOR | 199.535 | 2 |
SUI | 191.630 | 2 |
USA | 199.345 | 2 |
library(dplyr)
library(knitr)
library(kableExtra)
# Pridanie grade a CloseToMedal
krasokorculiarky %>%
mutate(
grade = case_when(
Body >= 220 ~ "A",
Body >= 200 ~ "B",
Body >= 190 ~ "C",
TRUE ~ "D"
),
CloseToMedal = Body >= 200 & Body < 203.59 # TRUE pre body tesne mimo top 3 čiže blízko ku medaile
) %>%
kable() %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE,
position = "center"
)
Meno | Krajina | Body | MaMedailu | grade | CloseToMedal |
---|---|---|---|---|---|
Kaori Sakamoto | JPN | 222.96 | TRUE | A | FALSE |
Isabeau Levito | USA | 212.16 | TRUE | B | FALSE |
Chaeyeon Kim | KOR | 203.59 | TRUE | B | FALSE |
Loena Hendrickx | BEL | 200.25 | FALSE | B | TRUE |
Kimmy Repond | SUI | 196.02 | FALSE | C | FALSE |
Lee Hae-In | KOR | 195.48 | FALSE | C | FALSE |
Mone Chiba | JPN | 195.46 | FALSE | C | FALSE |
Hana Yoshida | JPN | 194.93 | FALSE | C | FALSE |
Livia Kaiser | SUI | 187.24 | FALSE | D | FALSE |
Amber Glenn | USA | 186.53 | FALSE | D | FALSE |