Globálne nastavenie Chunkov

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

Úvod

V tomto cvičení budem pracovať s rôznymi typmi dát v jazyku R – číselnými, logickými, textovými, vektormi a maticami.
Cieľom je pochopiť ich použitie a na konci vytvoriť jednoduchú vlastnú inováciu.


Škálary (jednočíselné hodnoty)

Numerické škálary

# Priradenie hodnôt
a <- 12
b <- 2.8
 
# Základné operácie
sucet <- a + b
rozdiel <- a - b
nasobenie <- a * b
delenie <- a / b
mocnina <- a ^ 3
modulo <- a %% 4
 
# Zaokrúhľovanie
round_b <- round(b)
ceil_b <- ceiling(b)
floor_b <- floor(b)
 
a; b
## [1] 12
## [1] 2.8
sucet; rozdiel; nasobenie; delenie; mocnina; modulo
## [1] 14.8
## [1] 9.2
## [1] 33.6
## [1] 4.285714
## [1] 1728
## [1] 0
round_b; ceil_b; floor_b
## [1] 3
## [1] 3
## [1] 2

Malé cvičenie 1

Vypočítaj hodnotu:
\[\frac{(18^2 + 5)}{9}\]

(18^2 + 5) / 9
## [1] 36.55556

Textové premenné

Práca s textom

first <- "Eliška"
last  <- "Lenická"
 
# Spojenie textov
cele_meno <- paste(first, last)
cele_meno_bez_medzery <- paste0(first, last)
ovocie <- paste("hruška", "slivka", "marhuľa", sep = ", ")
 
first; last; cele_meno; cele_meno_bez_medzery; ovocie
## [1] "Eliška"
## [1] "Lenická"
## [1] "Eliška Lenická"
## [1] "EliškaLenická"
## [1] "hruška, slivka, marhuľa"

Dĺžka textu a podreťazec

text <- "Učenie v R je zábavné!"
nchar(text)
## [1] 22
substr(text, 4, 10)
## [1] "nie v R"

Logické (boolovské) hodnoty

Základné logické operácie

p <- TRUE
q <- FALSE
 
!p       # negácia
## [1] FALSE
p & q    # AND
## [1] FALSE
p | q    # OR
## [1] TRUE
xor(p, q)# exclusive OR
## [1] TRUE

Porovnávanie hodnôt

2 < 10
## [1] TRUE
7 >= 10
## [1] FALSE
"apple" == "banana"
## [1] FALSE
"true" != "false"
## [1] TRUE
!FALSE
## [1] TRUE

Logické operácie s číslami

vek <- 19
vek > 18 & vek < 30
## [1] TRUE
vek < 15 | vek > 25
## [1] FALSE

Logický vektor

log_vec <- c(TRUE, TRUE, FALSE, TRUE, FALSE)
log_vec
## [1]  TRUE  TRUE FALSE  TRUE FALSE

Numerické vektory

Vytváranie vektorov

v1 <- c(1, 3, 5, 7)
v2 <- 2:8
v3 <- seq(0, 2, by = 0.5)
v4 <- rep(4, times = 6)
v5 <- runif(5)
v6 <- rnorm(5)
 
v1; v2; v3; v4; v5; v6
## [1] 1 3 5 7
## [1] 2 3 4 5 6 7 8
## [1] 0.0 0.5 1.0 1.5 2.0
## [1] 4 4 4 4 4 4
## [1] 0.2015948 0.6860989 0.8395280 0.3817302 0.1993725
## [1] -1.6092335 -1.4669875  0.3919024 -0.1367630  0.7730157

Aritmetické operácie s vektormi

v <- c(1, 2, 3, 4, 5)
v + 2
## [1] 3 4 5 6 7
v * 3
## [1]  3  6  9 12 15
(v - 1) / 2
## [1] 0.0 0.5 1.0 1.5 2.0
exp(v)
## [1]   2.718282   7.389056  20.085537  54.598150 148.413159
sum(c(1,2,3), c(2,2,2))
## [1] 12
crossprod(c(2,3,4), c(1,1,1))
##      [,1]
## [1,]    9
c(1,2,3) * c(4,5,6)
## [1]  4 10 18

Indexovanie a výber

x <- c(4, 9, 2, 15, 6, 10)
x[1]
## [1] 4
x[3:5]
## [1]  2 15  6
x[-2]
## [1]  4  2 15  6 10
x[x >= 6]
## [1]  9 15  6 10
which(x >= 6)
## [1] 2 4 5 6

Práca s chýbajúcimi hodnotami

y <- c(5, 8, NA, 12, NA, 7)
is.na(y)
## [1] FALSE FALSE  TRUE FALSE  TRUE FALSE
mean(y)
## [1] NA
mean(y, na.rm = TRUE)
## [1] 8

Základné štatistiky a usporiadanie

z <- c(9, 4, 11, 7, 2)
mean(z)
## [1] 6.6
sd(z)
## [1] 3.646917
max(z)
## [1] 11
summary(z)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     2.0     4.0     7.0     6.6     9.0    11.0
sort(z)
## [1]  2  4  7  9 11
sort(z, decreasing = TRUE)
## [1] 11  9  7  4  2

Malé cvičenie 2

Vytvor vektor cisla s hodnotami od 5 do 25 a vypočítaj priemer všetkých nepárnych čísel.

cisla <- 5:25
mean(cisla[cisla %% 2 != 0])
## [1] 15

Matice

Vytvorenie matíc

M <- matrix(1:15, nrow = 3, ncol = 5)
M_byrow <- matrix(1:15, nrow = 3, byrow = TRUE)
M; M_byrow
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    4    7   10   13
## [2,]    2    5    8   11   14
## [3,]    3    6    9   12   15
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15

Indexovanie a rozmery

dim(M)
## [1] 3 5
M[2, 3]
## [1] 8
M[, 4]
## [1] 10 11 12
M[1, ]
## [1]  1  4  7 10 13
M[1:2, 2:4]
##      [,1] [,2] [,3]
## [1,]    4    7   10
## [2,]    5    8   11

Operácie s maticami

A <- matrix(c(3, 2, 1, 5), nrow = 2)
B <- matrix(c(7, 6, 4, 2), nrow = 2)
 
A + B
##      [,1] [,2]
## [1,]   10    5
## [2,]    8    7
A * B
##      [,1] [,2]
## [1,]   21    4
## [2,]   12   10
A %*% B
##      [,1] [,2]
## [1,]   27   14
## [2,]   44   18
t(A)
##      [,1] [,2]
## [1,]    3    2
## [2,]    1    5
det(A)
## [1] 13
solve(A)
##            [,1]        [,2]
## [1,]  0.3846154 -0.07692308
## [2,] -0.1538462  0.23076923

Zlučovanie vektorov

C <- cbind(2:4, 5:7)
D <- rbind(3:5, 6:8)
C; D
##      [,1] [,2]
## [1,]    2    5
## [2,]    3    6
## [3,]    4    7
##      [,1] [,2] [,3]
## [1,]    3    4    5
## [2,]    6    7    8

Výpočty po riadkoch a stĺpcoch

M2 <- matrix(1:9, nrow = 3)
apply(M2, 1, sum)
## [1] 12 15 18
apply(M2, 2, mean)
## [1] 2 5 8

Malé cvičenie 3

Vytvor maticu 5×5 s hodnotami 1..25 po stĺpcoch a vypočítaj riadkové súčty.

M3 <- matrix(1:25, nrow = 5, byrow = FALSE)
rowSums(M3)
## [1] 55 60 65 70 75

Môj návrh použitia novinky

Ako vlastnú inováciu vytvorím jednoduchý koláčový graf s rozdelením času počas dňa.

cas <- c(8, 6, 4, 6)
aktivity <- c("Škola", "Spánok", "Voľný čas", "Štúdium")
 
pie(cas,
    labels = aktivity,
    col = c("lightblue", "pink", "lightgreen", "yellow"),
    main = "Rozdelenie času počas dňa")


Záver

V tomto cvičení som si precvičila prácu so základnými typmi dát, vektorovými a maticovými operáciami.
Ukázalo sa, že R Markdown je prehľadný nástroj na spájanie textu a výsledkov kódu.
Ako novinku som vytvorila vlastný koláčový graf s rozdelením aktivít počas dňa.