Pre prácu s údajmi (databázou) používame najčastejšie dátový typ
.data.frame.. Je to tabuľka, ktorá pozostáva zo stĺpcov rozličných
typov. Jeden riadok pritom predstavuje jeden záznam databázy.
Príklad
Majme údaje o žiakoch, ktoré predstavujú tri premenné - Meno, Vek a
Body:
# Nastavenie prostredia pre čistý výstup
knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)
# Vytvorenie samostatných premenných
Meno <- c("Jana", "Jozef", "Mária", "Peter", "Lucia")
Vek <- c(10, 11, 9, 12, 10)
Body <- c(85, 92, 78, 88, 95)
# Spojenie do jedného data.frame
udaje <- data.frame(Meno, Vek, Body)
print(udaje)
## Meno Vek Body
## 1 Jana 10 85
## 2 Jozef 11 92
## 3 Mária 9 78
## 4 Peter 12 88
## 5 Lucia 10 95
# Adresovanie premenných a základné výpočty
cat("\n Priemerný vek žiakov je:", round(mean(udaje$Vek), 2), "rokov\n")
##
## Priemerný vek žiakov je: 10.4 rokov
cat("Najvyšší počet bodov získal:", udaje$Meno[which.max(udaje$Body)], "\n")
## Najvyšší počet bodov získal: Lucia
# Výber konkrétnych údajov
print(subset(udaje, Meno == "Jozef"))
## Meno Vek Body
## 2 Jozef 11 92
print(udaje[, c("Vek", "Body")])
## Vek Body
## 1 10 85
## 2 11 92
## 3 9 78
## 4 12 88
## 5 10 95
# Základná deskriptívna štatistika
summary(udaje)
## Meno Vek Body
## Length:5 Min. : 9.0 Min. :78.0
## Class :character 1st Qu.:10.0 1st Qu.:85.0
## Mode :character Median :10.0 Median :88.0
## Mean :10.4 Mean :87.6
## 3rd Qu.:11.0 3rd Qu.:92.0
## Max. :12.0 Max. :95.0
# Pridanie nového stĺpca - napr. známka podľa bodov
udaje$Znamka <- ifelse(
udaje$Body >= 90, "Výborný",
ifelse(udaje$Body >= 80, "Chválitebný", "Dobrý")
)
print(udaje)
## Meno Vek Body Znamka
## 1 Jana 10 85 Chválitebný
## 2 Jozef 11 92 Výborný
## 3 Mária 9 78 Dobrý
## 4 Peter 12 88 Chválitebný
## 5 Lucia 10 95 Výborný
# Pridanie nového stĺpca typu TRUE/FALSE
udaje$MaAuto <- c(TRUE, FALSE, FALSE, TRUE, FALSE)
print(udaje)
## Meno Vek Body Znamka MaAuto
## 1 Jana 10 85 Chválitebný TRUE
## 2 Jozef 11 92 Výborný FALSE
## 3 Mária 9 78 Dobrý FALSE
## 4 Peter 12 88 Chválitebný TRUE
## 5 Lucia 10 95 Výborný FALSE
# Pridanie nového riadku (s inými údajmi)
novy.ziak <- data.frame(Meno = "Diana", Vek = 13, Body = 81, Znamka = "Chválitebný", MaAuto = FALSE)
udaje <- rbind(udaje, novy.ziak)
print(udaje)
## Meno Vek Body Znamka MaAuto
## 1 Jana 10 85 Chválitebný TRUE
## 2 Jozef 11 92 Výborný FALSE
## 3 Mária 9 78 Dobrý FALSE
## 4 Peter 12 88 Chválitebný TRUE
## 5 Lucia 10 95 Výborný FALSE
## 6 Diana 13 81 Chválitebný FALSE
# Zoradenie podľa bodov (od najlepšieho)
udaje <- udaje[order(-udaje$Body), ]
print(udaje)
## Meno Vek Body Znamka MaAuto
## 5 Lucia 10 95 Výborný FALSE
## 2 Jozef 11 92 Výborný FALSE
## 4 Peter 12 88 Chválitebný TRUE
## 1 Jana 10 85 Chválitebný TRUE
## 6 Diana 13 81 Chválitebný FALSE
## 3 Mária 9 78 Dobrý FALSE