Code
knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)Téma: dostupnosť bývania na Slovensku
knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)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).
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
round(roky, 1) # zaokruhlenie na 1 desatinne miesto[1] 11.7
ceiling(roky) # najblizsie vyssie cele cislo[1] 12
floor(roky) # najblizsie nizsie cele cislo[1] 11
Koľko celých mesačných platov stojí byt a koľko je to rokov a mesiacov?
mesiace <- floor(cena_bytu / mzda)
mesiace[1] 140
mesiace %/% 12 # cele roky[1] 11
mesiace %% 12 # zvysne mesiace[1] 8
Byt teda stojí približne 11 rokov a 8 mesiacov hrubej mzdy.
kraj <- "Bratislavsky"
typ <- "kraj"
paste(kraj, typ) # spojenie s medzerou[1] "Bratislavsky kraj"
paste0("ceny_", 2025) # spojenie bez medzery[1] "ceny_2025"
paste("BA", "KE", "PO", sep = ",") # spojenie s oddelovacom[1] "BA,KE,PO"
x <- "Dostupnost byvania"
nchar(x) # pocet znakov[1] 18
substr(x, 1, 10) # prvych 10 znakov[1] "Dostupnost"
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
!p # NOT - negacia[1] FALSE
p & q # AND - a sucasne[1] FALSE
p | q # OR - alebo[1] TRUE
cena_m2 > 3000[1] TRUE
kraj == "Bratislavsky"[1] TRUE
kraj != "Presovsky"[1] TRUE
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?
splatka <- 958 # priblizna splatka (90 % uver, 30 rokov, 3,8 %)
uspory <- 15000
splatka <= 0.4 * mzda # splatka do 40 % mzdy?[1] FALSE
uspory >= 0.1 * cena_bytu # mame na akontaciu?[1] FALSE
(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ý.
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
runif(3, min = 3000, max = 3500) # 3 nahodne ceny za m2[1] 3125.964 3170.829 3134.999
mzdy; plochy[1] 1133 1211 1304 1430 1524 1620
[1] 40 60 80 100
mzdy * 12 # rocne mzdy[1] 13596 14532 15648 17160 18288 19440
plochy * cena_m2 # ceny bytov roznych velkosti[1] 130480 195720 260960 326200
diff(mzdy) # medzirocny narast v eurach[1] 78 93 126 94 96
rast <- round(diff(mzdy) / mzdy[-6] * 100, 1) # medzirocny rast v %
rast[1] 6.9 7.7 9.7 6.6 6.3
mzdy[1] # prvy prvok (2020)[1] 1133
mzdy[4:6] # posledne tri roky[1] 1430 1524 1620
mzdy[mzdy > 1400] # mzdy vacsie ako 1400[1] 1430 1524 1620
which(mzdy > 1400) # ktore prvky to su?[1] 4 5 6
Ceny bývania za m² po štvrťrokoch, hodnotu za 2. štvrťrok 2025 nemám.
ceny_q <- c(2700, NA, 2814, 2906, 3005)
is.na(ceny_q)[1] FALSE TRUE FALSE FALSE FALSE
mean(ceny_q) # NA[1] NA
mean(ceny_q, na.rm = TRUE) # bez NA[1] 2856.25
mean(mzdy)[1] 1370.333
max(mzdy)[1] 1620
summary(mzdy) Min. 1st Qu. Median Mean 3rd Qu. Max.
1133 1234 1367 1370 1500 1620
sort(rast, decreasing = TRUE)[1] 9.7 7.7 6.9 6.6 6.3
V koľkých rokoch rástla mzda o viac ako 7 % a o koľko eur spolu?
sum(rast > 7)[1] 2
sum(diff(mzdy)[rast > 7])[1] 219
Mzda a cena za m² v štyroch krajoch (približné údaje podľa WOOD & Company a Financer.sk).
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
dim(K)[1] 4 2
K[1, 2] # cena v BA[1] 3190
K[, 1] # vsetky mzdy BA KE PO BB
1949 1399 1195 1354
K["PO", ] # riadok Presovskeho krajamzda_kraj cena_kraj
1195 1860
apply(K, 2, mean) # priemer po stlpcochmzda_kraj cena_kraj
1474.25 2172.50
t(K) # transpozicia BA KE PO BB
mzda_kraj 1949 1399 1195 1354
cena_kraj 3190 2102 1860 1538
Pre každý kraj vypočítajte, koľko rokov hrubej mzdy stojí byt 70 m², a nájdite najdostupnejší kraj.
roky_kraj <- 70 * K[, 2] / (K[, 1] * 12)
round(roky_kraj, 1) BA KE PO BB
9.5 8.8 9.1 6.6
which.min(roky_kraj) # najdostupnejsi krajBB
4