title: “Domáca úloha 2” author: “Martin Čásar” date: “Október 2025” output: html_notebook:

Numerické hodnoty a premenné

Vytvárame jednoduché numerické premenné a skúšame základné operácie:

a <- 42
b <- 7
a + b
## [1] 49
a * b
## [1] 294
a / b
## [1] 6

Malé cvičenie

Vypočítajte obsah obdĺžnika so stranami x = 12.5 a y = 8.3. Výsledok uložte do premennej obsah.

x <- 12.5
y <- 8.3
obsah <- x * y
obsah
## [1] 103.75

Logické hodnoty

Vytvoríme jednoduché logické porovnania:

p <- 15
q <- 20
p > q
## [1] FALSE
p <= q
## [1] TRUE

Malé cvičenie

Overte, či je číslo r = 36 deliteľné číslom 6. Výsledok bude logická hodnota.

r <- 36
r %% 6 == 0
## [1] TRUE

Textové hodnoty

Práca s textovými premennými:

meno <- "Martin"
priezvisko <- "Čásar"
cele_meno <- paste(meno, priezvisko)
cele_meno
## [1] "Martin Čásar"

Malé cvičenie

Uložte do premennej svoj obľúbený citát a zistite, koľko znakov obsahuje.

citát <- "Nikdy sa nevzdávaj, aj malé kroky vedú k cieľu."
nchar(citát)
## [1] 47

Môj návrh použitia novinky

Okrem funkcie paste() môžeme použiť aj balíček stringr, ktorý má užitočné funkcie pre prácu s textom. Príklad: kontrola, či text začína určitým slovom.

library(stringr)

slovo <- "Programovanie v R je zábavné"
str_starts(slovo, "Programovanie")
## [1] TRUE
str_ends(slovo, "ťažké")
## [1] FALSE

Alebo môžeme rozdeliť vetu na jednotlivé slová:

str_split(slovo, " ")
## [[1]]
## [1] "Programovanie" "v"             "R"             "je"           
## [5] "zábavné"

Vektory

# vektor inflácie za 8 štvrťrokov (syntetické dáta)
infl <- c(0.025, 0.028, 0.031, 0.037, 0.042, 0.039, 0.035, 0.033)

# vektor rastu HDP
gdp  <- c(0.012, 0.016, 0.017, 0.019, 0.020, 0.018, 0.017, 0.016)

length(infl); length(gdp)
## [1] 8
## [1] 8
mean(infl); mean(gdp)
## [1] 0.03375
## [1] 0.016875
range(infl); range(gdp)
## [1] 0.025 0.042
## [1] 0.012 0.020
infl[1]           # prvok 1
## [1] 0.025
infl[3:5]         # rozsah
## [1] 0.031 0.037 0.042
infl[-1]          # všetko okrem prvého
## [1] 0.028 0.031 0.037 0.042 0.039 0.035 0.033
infl[infl > 0.035]  # filtrovanie podľa podmienky
## [1] 0.037 0.042 0.039
which.max(infl); infl[which.max(infl)]
## [1] 5
## [1] 0.042

Malé cvičenie

Vypočítajte percentuálnu zmenu inflácie voči predošlému štvrťroku: (infl[t] - infl[t-1]) / infl[t-1].

Zistite, v koľkých štvrťrokoch bol reálny rast kladný.

real <- gdp-infl
pc_change_infl <- diff(infl) / infl[-length(infl)]
sum(real>0)
## [1] 0
pc_change_infl
## [1]  0.12000000  0.10714286  0.19354839  0.13513514 -0.07142857 -0.10256410
## [7] -0.05714286

#Užitočné generátory vektorov

qtrs <- paste0("Q", 1:8)    # Q1..Q8
sekv <- seq(from = 10, to = 20, by = 2)
repn <- rep(100, times = 5)
qtrs; sekv; repn
## [1] "Q1" "Q2" "Q3" "Q4" "Q5" "Q6" "Q7" "Q8"
## [1] 10 12 14 16 18 20
## [1] 100 100 100 100 100
infl_named <- infl
names(infl_named) <- qtrs
infl_named
##    Q1    Q2    Q3    Q4    Q5    Q6    Q7    Q8 
## 0.025 0.028 0.031 0.037 0.042 0.039 0.035 0.033
infl_named["Q4"]
##    Q4 
## 0.037

Malé cvičenie

Vytvorte pomenovaný vektor gdp_named s menami Q1..Q8 a vypočítajte priemerný rast len pre Q5:Q8.

gdp_named <- gdp
names(gdp_named) <- qtrs
mean(gdp_named[c("Q5","Q6","Q7","Q8")])
## [1] 0.01775

Matice

M <- cbind(infl, gdp, real)  # 8x3
dim(M); nrow(M); ncol(M)
## [1] 8 3
## [1] 8
## [1] 3
colnames(M) <- c("Inflacia","RastHDP","RealnyRast")
rownames(M) <- qtrs
M
##    Inflacia RastHDP RealnyRast
## Q1    0.025   0.012     -0.013
## Q2    0.028   0.016     -0.012
## Q3    0.031   0.017     -0.014
## Q4    0.037   0.019     -0.018
## Q5    0.042   0.020     -0.022
## Q6    0.039   0.018     -0.021
## Q7    0.035   0.017     -0.018
## Q8    0.033   0.016     -0.017
M["Q4", ]               # riadok Q4
##   Inflacia    RastHDP RealnyRast 
##      0.037      0.019     -0.018
M[ , "Inflacia"]        # stĺpec inflácie
##    Q1    Q2    Q3    Q4    Q5    Q6    Q7    Q8 
## 0.025 0.028 0.031 0.037 0.042 0.039 0.035 0.033
rowMeans(M)             # priemer cez stĺpce pre každý riadok
##         Q1         Q2         Q3         Q4         Q5         Q6         Q7 
## 0.00800000 0.01066667 0.01133333 0.01266667 0.01333333 0.01200000 0.01133333 
##         Q8 
## 0.01066667
colMeans(M)             # priemer cez riadky pre každý stĺpec
##   Inflacia    RastHDP RealnyRast 
##   0.033750   0.016875  -0.016875
rowSums(M); colSums(M)
##    Q1    Q2    Q3    Q4    Q5    Q6    Q7    Q8 
## 0.024 0.032 0.034 0.038 0.040 0.036 0.034 0.032
##   Inflacia    RastHDP RealnyRast 
##      0.270      0.135     -0.135

Malé cvičenie

Vytvorte podmaticu len zo stĺpcov Inflacia a RastHDP.

Vypočítajte priemer týchto dvoch ukazovateľov pre každý štvrťrok.

X <- M[, c("Inflacia","RastHDP")]
avg_two <- rowMeans(X)
head(avg_two)
##     Q1     Q2     Q3     Q4     Q5     Q6 
## 0.0185 0.0220 0.0240 0.0280 0.0310 0.0285