Code
knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)# Priradenie premennej konkrétnu hodnotu
a <- 12
b <- 4.25
# Základné aritmetické operácie
sum_ab <- a + b #súčet
diff_ab <- a - b #rozdiel
prod_ab <- a * b #násobenie
quot_ab <- a / b #delenie
power_ab <- a ^ b #umocňovanie
mod_ab <- a %% 5 #zbytok po delení piatimi
int_div_ab <- a %/% b #celočíselné delenie
a; b[1] 12
[1] 4.25
sum_ab; diff_ab; prod_ab; quot_ab[1] 16.25
[1] 7.75
[1] 51
[1] 2.823529
power_ab; mod_ab; int_div_ab[1] 38594.04
[1] 2
[1] 2
round_b <- round(b)
ceil_b <- ceiling(b)
floor_b <- floor(b)
round_b; ceil_b; floor_b[1] 4
[1] 5
[1] 4
Vytvorila som dve numerické premenné “c” a “d”, na ktorých som precvičila základné aritmetické operácie, modulo aj zaokrúhľovanie
c <- 234.83
d <- 559.274
# Základné aritmetické operácie
sucet_cd <- c + d
rozdiel_cd <- c - d
sucin_cd <- c * d
podiel_cd <- d / c
sucet_cd; rozdiel_cd; sucin_cd; podiel_cd[1] 794.104
[1] -324.444
[1] 131334.3
[1] 2.381612
# Umocňovanie a modulo
power_c <- c ^ 3
mod_c <- c %% 5
power_c; mod_c[1] 12949731
[1] 4.83
# Zaokrúhľovanie
round_c <- round(c)
floor_c <- floor(c)
ceil_d <- ceiling(d)
round_c; floor_c; ceil_d[1] 235
[1] 234
[1] 560
first <- "Chiara"
last <- "Pucekova"
# Spojenie s medzerou
full <- paste(first, last)
# Spojenie bez medzery
full_nospace <- paste0(first, last)
# Spojenie viacerých slov s oddeľovačom
school <- paste("Comenius", "University", "Bratislava", sep = "-")
first; last; full; full_nospace; school [1] "Chiara"
[1] "Pucekova"
[1] "Chiara Pucekova"
[1] "ChiaraPucekova"
[1] "Comenius-University-Bratislava"
text <- "Econometrics is interesting"
# Počet znakov
nchar(text)[1] 27
# Výber prvých 12 znakov
substr(text, 1, 12)[1] "Econometrics"
p <- TRUE
q <- FALSE
!p[1] FALSE
p & q[1] FALSE
p | q[1] TRUE
xor(p,q)[1] TRUE
10 < 15[1] TRUE
20 >= 20[1] TRUE
"Bratislava" == "Bratislava"[1] TRUE
"Bratislava" != "Trenčín"[1] TRUE
vek <- 22
vek >= 18 & vek < 30[1] TRUE
vek < 18 | vek > 65[1] FALSE
hodnoty <- c(TRUE, TRUE, FALSE, TRUE, FALSE)
hodnoty [1] TRUE TRUE FALSE TRUE FALSE
v1 <- c(3, 6, 9, 12)
v2 <- 5:10
v3 <- seq(from = 0, to = 2, by = 0.5)
v4 <- rep(4, times = 6)
v5 <- runif(6)
v6 <- rnorm(6)
v1; v2; v3; v4; v5; v6[1] 3 6 9 12
[1] 5 6 7 8 9 10
[1] 0.0 0.5 1.0 1.5 2.0
[1] 4 4 4 4 4 4
[1] 0.8360065 0.7409553 0.7789008 0.6901887 0.3440477 0.3099554
[1] 0.74379740 0.09110435 0.01473292 0.60858940 -0.51622578 0.55389578
v <- c(2, 4, 6, 8)
v + 5[1] 7 9 11 13
v * 3[1] 6 12 18 24
(v + 2) / 2[1] 2 3 4 5
exp(v)[1] 7.389056 54.598150 403.428793 2980.957987
x1 <- c(2, 4, 6)
x2 <- c(1, 3, 5)
sum(x1, x2)[1] 21
crossprod(x1, x2) [,1]
[1,] 44
x1 * x2[1] 2 12 30
length(v1)[1] 4
length(v5)[1] 6
x <- c(8, 15, 4, 22, 10, 3, 18)
# Prvý prvok
x[1][1] 8
# Druhý až štvrtý prvok
x[2:4][1] 15 4 22
# Všetky prvky okrem prvého
x[-1][1] 15 4 22 10 3 18
# Hodnoty väčšie ako 10
x[x > 10][1] 15 22 18
# Pozície hodnôt väčších ako 10
which(x > 10)[1] 2 4 7
y <- c(5, NA, 8, 12, NA, 15)
is.na(y)[1] FALSE TRUE FALSE FALSE TRUE FALSE
# Priemer bez odstránenia NA
mean(y)[1] NA
# Priemer po odstránení NA
mean(y, na.rm = TRUE)[1] 10
z <- c(12, 7, 15, 4, 18, 10)
mean(z)[1] 11
sd(z)[1] 5.138093
max(z)[1] 18
summary(z) Min. 1st Qu. Median Mean 3rd Qu. Max.
4.00 7.75 11.00 11.00 14.25 18.00
# Zoradenie vzostupne
sort(z)[1] 4 7 10 12 15 18
# Zoradenie zostupne
sort(z, decreasing = TRUE)[1] 18 15 12 10 7 4
Vektor - počet bodov desiatich študentov, ktorí sa zúčastnili testu
body <- c(72, 85, 91, 64, 78, 95, 56, 88, 69, 82)
body [1] 72 85 91 64 78 95 56 88 69 82
Zistíme počet študentov, priemerný počet bodov a najvyšší počet bodov
length(body)[1] 10
mean(body)[1] 78
max(body)[1] 95
Vyberieme tých študentov, ktorí z testu získali viac ako 80 bodov
body[body > 80][1] 85 91 95 88 82
Zistíme pozície týchto študentov v našom vektore
which(body > 80)[1] 2 3 6 8 10
Body zoradíme od najvyššieho po najmenší
sort(body, decreasing = TRUE) [1] 95 91 88 85 82 78 72 69 64 56
Každému študentovi k bodom z testu pridáme ešte 5 bonusových bodov
body_bonus <- body + 5
body_bonus [1] 77 90 96 69 83 100 61 93 74 87
Vypočítame súčet bodov študentov, ktorí z testu dosiahli aspoň 80 bodov
sum(body[body >= 80])[1] 441
m <- matrix (2:13, nrow = 3, ncol = 4)
m_byrow <- matrix(2:13, nrow = 3, byrow = TRUE)
m; m_byrow [,1] [,2] [,3] [,4]
[1,] 2 5 8 11
[2,] 3 6 9 12
[3,] 4 7 10 13
[,1] [,2] [,3] [,4]
[1,] 2 3 4 5
[2,] 6 7 8 9
[3,] 10 11 12 13
dim(m)[1] 3 4
# Prvý riadok, druhý stĺpec
m[1, 2][1] 5
# Všetky prvky tretieho stĺpca
m[, 3][1] 8 9 10
# Všetky prvky druhého riadku
m[2, ][1] 3 6 9 12
# Podmatica
m[1:2, 2:3] [,1] [,2]
[1,] 5 8
[2,] 6 9
A <- matrix(c(2, 3, 4, 5), nrow = 2)
B <- matrix(c(6, 7, 8, 9), nrow = 2)
# Sčítanie
A + B [,1] [,2]
[1,] 8 12
[2,] 10 14
# Násobenie zodpovedajúcich prvkov
A * B [,1] [,2]
[1,] 12 32
[2,] 21 45
# Maticové násobenie
A %% B [,1] [,2]
[1,] 2 4
[2,] 3 5
# Transpozícia
t(A) [,1] [,2]
[1,] 2 3
[2,] 4 5
# Determinant
det(A)[1] -2
# Inverzná matica
solve(A) [,1] [,2]
[1,] -2.5 2
[2,] 1.5 -1
C <- cbind(2:4, 5:7)
D <- rbind(2:4, 5:7)
C; D [,1] [,2]
[1,] 2 5
[2,] 3 6
[3,] 4 7
[,1] [,2] [,3]
[1,] 2 3 4
[2,] 5 6 7
M <- matrix(2:10, nrow = 3)
M [,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
[3,] 4 7 10
# Súčet po riadkoch
apply(M, 1, sum)[1] 15 18 21
# Priemer po stĺpcoch
apply(M, 2, mean)[1] 3 6 9
Matica - výsledky štyroch študentov v troch testochh
vysledky <- matrix(
c(75, 82, 90,
68, 74, 81,
92, 88, 95,
80, 79, 85),
nrow = 4,
byrow = TRUE)
vysledky [,1] [,2] [,3]
[1,] 75 82 90
[2,] 68 74 81
[3,] 92 88 95
[4,] 80 79 85
Rozmery matice
dim(vysledky)[1] 4 3
Výsledky prvého študenta z druhého testu
vysledky[1, 2][1] 82
Výsledky všetkých študentov z tretieho testu
vysledky[, 3][1] 90 81 95 85
Všetky výsledky druhého študenta
vysledky[2, ][1] 68 74 81
Celkový počet bodov každého študenta
apply(vysledky, 1, sum)[1] 247 223 275 244
Priemerný počet bodov v jednotlivých testoch
apply(vysledky, 2, mean)[1] 78.75 80.75 87.75
Transponovaná matica
t(vysledky) [,1] [,2] [,3] [,4]
[1,] 75 68 92 80
[2,] 82 74 88 79
[3,] 90 81 95 85
Súčin transponovanej a pôvodnej matice
t(vysledky) %*% vysledky [,1] [,2] [,3]
[1,] 25113 25598 27798
[2,] 25598 26185 28449
[3,] 27798 28449 30911
A_eig <- matrix(c(4, 1,
1, 4),
nrow = 2, byrow = TRUE)
A_eig [,1] [,2]
[1,] 4 1
[2,] 1 4
eig_A <- eigen(A_eig, symmetric = TRUE)
eig_Aeigen() decomposition
$values
[1] 5 3
$vectors
[,1] [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
lambda_A <- eig_A$values
V_A <- eig_A$vectors
lambda_A; V_A[1] 5 3
[,1] [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
Vlastná symetrická matica 3x3 - vypočítam vlastné čísla a vlastné vektory
hodnoty <- c(
0.00225, 0.00012, 0.00095,
0.00012, 0.00081, 0.00047,
0.00095, 0.00047, 0.00625
)
E <- matrix(hodnoty, nrow = 3, byrow = TRUE)
E [,1] [,2] [,3]
[1,] 0.00225 0.00012 0.00095
[2,] 0.00012 0.00081 0.00047
[3,] 0.00095 0.00047 0.00625
eig_E <- eigen(E, symmetric = TRUE)
eig_Eeigen() decomposition
$values
[1] 0.0065054401 0.0020359878 0.0007685721
$vectors
[,1] [,2] [,3]
[1,] -0.21937295 0.97520511 0.02916352
[2,] -0.08482918 0.01071313 -0.99633791
[3,] -0.97194625 -0.22104351 0.08037568
eig_E$values [1] 0.0065054401 0.0020359878 0.0007685721
eig_E$vectors [,1] [,2] [,3]
[1,] -0.21937295 0.97520511 0.02916352
[2,] -0.08482918 0.01071313 -0.99633791
[3,] -0.97194625 -0.22104351 0.08037568