Základné operácie v R

Téma: dostupnosť bývania na Slovensku

Author

Riano Vajas
(podľa predlohy V. Gazdu)

Published

October 5, 2026

Globálne nastavenie Chunkov

  • echo nastavuje, či chceme v dokumente vypisovať kódy R
  • message = FALSE potláča pracovné výstupy z R
  • warning = FALSE potláča varovania
Code
knitr::opts_chunk$set(
  echo = TRUE,
  message = FALSE,
  warning = FALSE
)

Úvod

V tomto cvičení skúšam základné operácie v R na téme z prvého zadania, teda na dostupnosti bývania na Slovensku. Používam údaje o cenách bytov (NBS) a o mzdách (ŠÚ SR).


Skaláre (jednočíselné hodnoty)

Numerické skaláre

Code
cena_m2 <- 3262     # priemerna cena bytu za m2, 4. stvrtrok 2025 (NBS)
plocha  <- 70       # velkost bytu v m2
mzda    <- 1620     # priemerna hruba mzda 2025 (SU SR)

cena_bytu <- cena_m2 * plocha     # nasobenie
rocna_mzda <- mzda * 12
roky <- cena_bytu / rocna_mzda    # kolko rokov treba pracovat na byt

cena_bytu; rocna_mzda; roky
[1] 228340
[1] 19440
[1] 11.74588
Code
round(roky, 1)      # zaokruhlenie na 1 desatinne miesto
[1] 11.7
Code
ceiling(roky)       # najblizsie vyssie cele cislo
[1] 12
Code
floor(roky)         # najblizsie nizsie cele cislo
[1] 11

Malé cvičenie

Koľko celých mesačných platov stojí byt a koľko je to rokov a mesiacov?

Code
mesiace <- floor(cena_bytu / mzda)
mesiace
[1] 140
Code
mesiace %/% 12      # cele roky
[1] 11
Code
mesiace %% 12       # zvysne mesiace
[1] 8

Byt teda stojí približne 11 rokov a 8 mesiacov hrubej mzdy.


Text

Code
kraj <- "Bratislavsky"
typ  <- "kraj"
paste(kraj, typ)                       # spojenie s medzerou
[1] "Bratislavsky kraj"
Code
paste0("ceny_", 2025)                  # spojenie bez medzery
[1] "ceny_2025"
Code
paste("BA", "KE", "PO", sep = ",")     # spojenie s oddelovacom
[1] "BA,KE,PO"
Code
x <- "Dostupnost byvania"
nchar(x)            # pocet znakov
[1] 18
Code
substr(x, 1, 10)    # prvych 10 znakov
[1] "Dostupnost"

Logické (boolovské) hodnoty

Základy

Code
rast_cien <- 12.0   # rast cien byvania v roku 2025 v % (NBS)
rast_mzdy <- 6.3    # rast miezd v roku 2025 v % (SU SR)

p <- rast_cien > rast_mzdy   # rastu ceny rychlejsie ako mzdy?
q <- rast_mzdy > 10          # rastu mzdy o viac ako 10 %?
p; q
[1] TRUE
[1] FALSE
Code
!p              # NOT - negacia
[1] FALSE
Code
p & q           # AND - a sucasne
[1] FALSE
Code
p | q           # OR  - alebo
[1] TRUE

Porovnávanie

Code
cena_m2 > 3000
[1] TRUE
Code
kraj == "Bratislavsky"
[1] TRUE
Code
kraj != "Presovsky"
[1] TRUE

Malé cvičenie

Je splátka hypotéky 958 € dostupná, ak by nemala byť vyššia ako 40 % mzdy a zároveň máme našetrených aspoň 10 % ceny bytu?

Code
splatka <- 958       # priblizna splatka (90 % uver, 30 rokov, 3,8 %)
uspory  <- 15000

splatka <= 0.4 * mzda                                   # splatka do 40 % mzdy?
[1] FALSE
Code
uspory >= 0.1 * cena_bytu                               # mame na akontaciu?
[1] FALSE
Code
(splatka <= 0.4 * mzda) & (uspory >= 0.1 * cena_bytu)   # obe naraz
[1] FALSE

Ani jedna podmienka nie je splnená, takže pri priemernej mzde je byt nedostupný.


Numerické vektory

Generovanie vektorov

Code
roky_v <- 2020:2025                              # postupnost rokov
mzdy   <- c(1133, 1211, 1304, 1430, 1524, 1620)  # priemerna mzda (SU SR)
plochy <- seq(from = 40, to = 100, by = 20)      # byty 40 az 100 m2
rep(3262, times = 3)                             # 3x ta ista cena
[1] 3262 3262 3262
Code
runif(3, min = 3000, max = 3500)                 # 3 nahodne ceny za m2
[1] 3125.964 3170.829 3134.999
Code
mzdy; plochy
[1] 1133 1211 1304 1430 1524 1620
[1]  40  60  80 100

Operácie s vektormi

Code
mzdy * 12              # rocne mzdy
[1] 13596 14532 15648 17160 18288 19440
Code
plochy * cena_m2       # ceny bytov roznych velkosti
[1] 130480 195720 260960 326200
Code
diff(mzdy)             # medzirocny narast v eurach
[1]  78  93 126  94  96
Code
rast <- round(diff(mzdy) / mzdy[-6] * 100, 1)   # medzirocny rast v %
rast
[1] 6.9 7.7 9.7 6.6 6.3

Indexovanie

Code
mzdy[1]            # prvy prvok (2020)
[1] 1133
Code
mzdy[4:6]          # posledne tri roky
[1] 1430 1524 1620
Code
mzdy[mzdy > 1400]  # mzdy vacsie ako 1400
[1] 1430 1524 1620
Code
which(mzdy > 1400) # ktore prvky to su?
[1] 4 5 6

Chýbajúce hodnoty

Ceny bývania za m² po štvrťrokoch, hodnotu za 2. štvrťrok 2025 nemám.

Code
ceny_q <- c(2700, NA, 2814, 2906, 3005)
is.na(ceny_q)
[1] FALSE  TRUE FALSE FALSE FALSE
Code
mean(ceny_q)                 # NA
[1] NA
Code
mean(ceny_q, na.rm = TRUE)   # bez NA
[1] 2856.25

Základné štatistiky

Code
mean(mzdy)
[1] 1370.333
Code
max(mzdy)
[1] 1620
Code
summary(mzdy)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1133    1234    1367    1370    1500    1620 
Code
sort(rast, decreasing = TRUE)
[1] 9.7 7.7 6.9 6.6 6.3

Malé cvičenie

V koľkých rokoch rástla mzda o viac ako 7 % a o koľko eur spolu?

Code
sum(rast > 7)
[1] 2
Code
sum(diff(mzdy)[rast > 7])
[1] 219

Matice

Vytvorenie matice

Mzda a cena za m² v štyroch krajoch (približné údaje podľa WOOD & Company a Financer.sk).

Code
mzda_kraj <- c(1949, 1399, 1195, 1354)
cena_kraj <- c(3190, 2102, 1860, 1538)

K <- cbind(mzda_kraj, cena_kraj)     # spojenie po stlpcoch
rownames(K) <- c("BA", "KE", "PO", "BB")
K
   mzda_kraj cena_kraj
BA      1949      3190
KE      1399      2102
PO      1195      1860
BB      1354      1538
Code
dim(K)
[1] 4 2

Adresovanie a štatistiky

Code
K[1, 2]           # cena v BA
[1] 3190
Code
K[, 1]            # vsetky mzdy
  BA   KE   PO   BB 
1949 1399 1195 1354 
Code
K["PO", ]         # riadok Presovskeho kraja
mzda_kraj cena_kraj 
     1195      1860 
Code
apply(K, 2, mean) # priemer po stlpcoch
mzda_kraj cena_kraj 
  1474.25   2172.50 
Code
t(K)              # transpozicia
            BA   KE   PO   BB
mzda_kraj 1949 1399 1195 1354
cena_kraj 3190 2102 1860 1538

Malé cvičenie

Pre každý kraj vypočítajte, koľko rokov hrubej mzdy stojí byt 70 m², a nájdite najdostupnejší kraj.

Code
roky_kraj <- 70 * K[, 2] / (K[, 1] * 12)
round(roky_kraj, 1)
 BA  KE  PO  BB 
9.5 8.8 9.1 6.6 
Code
which.min(roky_kraj)    # najdostupnejsi kraj
BB 
 4