Základné operácie v R

Author

Anna Mária Cipová
(s využitím materiálov od pána V. Gazdu a umelej inteligencie)

Published

January 1, 2026

Globálne nastavenie chunkov

  • echo = TRUE zobrazí použitý R kód.
  • message = FALSE potlačí informačné správy.
  • warning = FALSE potlačí upozornenia.
Code
knitr::opts_chunk$set(
  echo = TRUE,
  message = FALSE,
  warning = FALSE
)

Úvod

Cieľom tohto dokumentu je demonštrovať základné operácie v programovacom jazyku R na príkladoch z ekonomickej a podnikateľskej praxe.

Dokument obsahuje prácu s numerickými hodnotami, textovými premennými, logickými operáciami, vektormi a maticami. Súčasťou sú aj vlastné cvičenia zamerané na využitie jednotlivých príkazov.


1. Numerické skaláre

Numerické skaláre predstavujú jednotlivé číselné hodnoty. V ekonomickej praxi ich môžeme využiť napríklad pri výpočte tržieb, nákladov alebo zisku.

Základné aritmetické operácie

Predpokladajme, že malá kaviareň dosiahla mesačné tržby 18 500 € a náklady 12 300 €.

Code
trzby <- 18500
naklady <- 12300

sucet <- trzby + naklady
rozdiel <- trzby - naklady
podiel <- trzby / naklady
nasobenie <- trzby * 2

sucet
[1] 30800
Code
rozdiel
[1] 6200
Code
podiel
[1] 1.504065
Code
nasobenie
[1] 37000

Zaokrúhľovanie

Code
hodnota <- 15.678

round(hodnota, digits = 2)
[1] 15.68
Code
ceiling(hodnota)
[1] 16
Code
floor(hodnota)
[1] 15

Malé cvičenie – Výpočet ziskovej marže

Zadanie:

Kaviareň dosiahla mesačné tržby 18 500 € a náklady 12 300 €. Vypočítajte jej zisk a ziskovú maržu v percentách. Výslednú maržu zaokrúhlite na dve desatinné miesta.

Code
trzby <- 18500
naklady <- 12300

zisk <- trzby - naklady
marza <- (zisk / trzby) * 100

zisk
[1] 6200
Code
round(marza, digits = 2)
[1] 33.51

Interpretácia:

Kaviareň dosiahla zisk 6 200 € a ziskovú maržu približne 33,51 %. To znamená, že zo 100 € tržieb jej po odpočítaní uvedených nákladov zostáva približne 33,51 €.


2. Textové premenné

Vytváranie a spájanie textu

Code
firma <- "Coffee"
nazov <- "House"

cely_nazov <- paste(firma, nazov)
nazov_bez_medzery <- paste0(firma, nazov)

cely_nazov
[1] "Coffee House"
Code
nazov_bez_medzery
[1] "CoffeeHouse"

Funkcia paste() spája textové hodnoty s medzerou, zatiaľ čo paste0() ich spája bez medzery.

Dĺžka textu a výber znakov

Code
produkt <- "Cappuccino"

nchar(produkt)
[1] 10
Code
substr(produkt, 1, 5)
[1] "Cappu"

Funkcia nchar() zisťuje počet znakov a substr() vyberá časť textového reťazca.

Vlastný príklad – Identifikácia produktu

Zadanie:

Vytvorte textové premenné s názvom produktu a kategórie. Následne ich spojte do jedného textu a zistite počet znakov v názve produktu.

Code
produkt <- "Espresso"
kategoria <- "Kava"

popis <- paste(kategoria, produkt)

popis
[1] "Kava Espresso"
Code
nchar(produkt)
[1] 8

3. Logické operácie

Logické operácie umožňujú porovnávať hodnoty a overovať splnenie určitých podmienok. Výsledkom je hodnota TRUE alebo FALSE.

Základné logické operácie

Code
p <- TRUE
q <- FALSE

!p
[1] FALSE
Code
p & q
[1] FALSE
Code
p | q
[1] TRUE
Code
xor(p, q)
[1] TRUE
  • ! znamená negáciu.
  • & znamená logické A.
  • | znamená logické ALEBO.
  • xor() znamená, že platí práve jedna z dvoch podmienok.

Porovnávanie ekonomických hodnôt

Code
trzby <- 18500
plan <- 17000

trzby > plan
[1] TRUE
Code
trzby == plan
[1] FALSE
Code
trzby != plan
[1] TRUE

Vlastné cvičenie – Splnenie podnikateľského cieľa

Zadanie:

Spoločnosť si stanovila minimálny mesačný cieľ tržieb 20 000 € a maximálne prípustné náklady 15 000 €. Skutočné tržby boli 22 000 € a náklady 14 000 €.

Overte, či spoločnosť splnila obidve podmienky súčasne.

Code
trzby <- 22000
naklady <- 14000

ciel_trzieb <- 20000
limit_nakladov <- 15000

splnene_trzby <- trzby >= ciel_trzieb
splnene_naklady <- naklady <= limit_nakladov

splnene_trzby
[1] TRUE
Code
splnene_naklady
[1] TRUE
Code
splneny_ciel <- splnene_trzby & splnene_naklady

splneny_ciel
[1] TRUE

Interpretácia:

Výsledkom je TRUE, pretože spoločnosť dosiahla požadované tržby a zároveň neprekročila stanovený limit nákladov.


4. Numerické vektory

Vektory umožňujú uchovávať viacero hodnôt v jednej premennej. V ekonomickej analýze ich môžeme využiť napríklad pri spracovaní mesačných tržieb.

Vytváranie vektorov

Code
v1 <- c(10, 20, 30, 40)
v2 <- 1:6
v3 <- seq(from = 0, to = 10, by = 2)
v4 <- rep(5, times = 4)

v1
[1] 10 20 30 40
Code
v2
[1] 1 2 3 4 5 6
Code
v3
[1]  0  2  4  6  8 10
Code
v4
[1] 5 5 5 5

Aritmetické operácie s vektormi

Code
trzby <- c(12000, 15000, 11000, 18000)

trzby + 1000
[1] 13000 16000 12000 19000
Code
trzby * 1.10
[1] 13200 16500 12100 19800
Code
trzby / 2
[1] 6000 7500 5500 9000

Každá operácia sa vykoná na jednotlivých prvkoch vektora.

Indexovanie vektorov

Code
trzby <- c(12000, 15000, 11000, 18000, 21000)

trzby[1]
[1] 12000
Code
trzby[2:4]
[1] 15000 11000 18000
Code
trzby[-1]
[1] 15000 11000 18000 21000
Code
trzby[trzby > 15000]
[1] 18000 21000
Code
which(trzby > 15000)
[1] 4 5

Chýbajúce hodnoty

Code
predaj <- c(100, 120, NA, 150, 180)

is.na(predaj)
[1] FALSE FALSE  TRUE FALSE FALSE
Code
mean(predaj)
[1] NA
Code
mean(predaj, na.rm = TRUE)
[1] 137.5

Argument na.rm = TRUE zabezpečí, že chýbajúce hodnoty nebudú zahrnuté do výpočtu.

Základné štatistické funkcie

Code
trzby <- c(12000, 15000, 11000, 18000, 21000)

mean(trzby)
[1] 15400
Code
sd(trzby)
[1] 4159.327
Code
max(trzby)
[1] 21000
Code
min(trzby)
[1] 11000
Code
summary(trzby)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  11000   12000   15000   15400   18000   21000 
Code
sort(trzby)
[1] 11000 12000 15000 18000 21000

Malé cvičenie – Analýza mesačných tržieb

Zadanie:

Spoločnosť dosiahla za šesť mesiacov tržby 12 000 €, 15 000 €, 11 000 €, 18 000 €, 21 000 € a 17 000 €.

Vypočítajte celkové tržby, priemerné mesačné tržby a identifikujte mesiace, v ktorých tržby prekročili 16 000 €.

Code
trzby <- c(12000, 15000, 11000,
           18000, 21000, 17000)

celkove_trzby <- sum(trzby)
priemerne_trzby <- mean(trzby)

nad_limit <- trzby[trzby > 16000]
mesiace <- which(trzby > 16000)

celkove_trzby
[1] 94000
Code
priemerne_trzby
[1] 15666.67
Code
nad_limit
[1] 18000 21000 17000
Code
mesiace
[1] 4 5 6

Interpretácia:

Celkové tržby predstavovali 94 000 € a priemerné mesačné tržby približne 15 666,67 €. Hranicu 16 000 € prekročili tržby vo štvrtom, piatom a šiestom mesiaci.


5. Matice

Matice predstavujú dvojrozmerné usporiadanie hodnôt do riadkov a stĺpcov. Môžeme ich použiť napríklad na analýzu tržieb jednotlivých produktov v rôznych regiónoch.

Vytvorenie matice

Code
M <- matrix(1:12, nrow = 3, byrow = TRUE)

M
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
Code
dim(M)
[1] 3 4

Argument byrow = TRUE znamená, že hodnoty sa do matice zapisujú postupne po riadkoch.

Výber prvkov matice

Code
M[1, 2]
[1] 2
Code
M[, 3]
[1]  3  7 11
Code
M[2, ]
[1] 5 6 7 8
Code
M[1:2, 2:3]
     [,1] [,2]
[1,]    2    3
[2,]    6    7

Základné maticové operácie

Code
A <- matrix(c(2, 4, 1, 3), nrow = 2)
B <- matrix(c(5, 2, 3, 6), nrow = 2)

A + B
     [,1] [,2]
[1,]    7    4
[2,]    6    9
Code
A * B
     [,1] [,2]
[1,]   10    3
[2,]    8   18
Code
A %*% B
     [,1] [,2]
[1,]   12   12
[2,]   26   30
Code
t(A)
     [,1] [,2]
[1,]    2    4
[2,]    1    3
Code
det(A)
[1] 2
Code
solve(A)
     [,1] [,2]
[1,]  1.5 -0.5
[2,] -2.0  1.0

Operátor * vykonáva násobenie zodpovedajúcich prvkov, zatiaľ čo %*% vykonáva maticové násobenie.

Zlučovanie vektorov do matíc

Code
C <- cbind(1:3, 4:6)
D <- rbind(1:3, 4:6)

C
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
Code
D
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Výpočty po riadkoch a stĺpcoch

Code
M <- matrix(1:12, nrow = 3, byrow = TRUE)

rowSums(M)
[1] 10 26 42
Code
colSums(M)
[1] 15 18 21 24
Code
apply(M, 1, mean)
[1]  2.5  6.5 10.5
Code
apply(M, 2, mean)
[1] 5 6 7 8

Malé cvičenie – Tržby produktov v regiónoch

Zadanie:

Spoločnosť predáva tri produkty v štyroch regiónoch. Vytvorte maticu 3 × 4 s hodnotami tržieb v eurách.

Vypočítajte celkové tržby jednotlivých produktov, celkové tržby jednotlivých regiónov a transponovanú maticu.

Code
trzby_matica <- matrix(
  c(1200, 1500, 1800, 1400,
    2000, 1700, 1900, 2200,
    900, 1100, 1300, 1600),
  nrow = 3,
  byrow = TRUE
)

rownames(trzby_matica) <- c(
  "Produkt_A", "Produkt_B", "Produkt_C"
)

colnames(trzby_matica) <- c(
  "Zapad", "Stred", "Vychod", "Juh"
)

trzby_matica
          Zapad Stred Vychod  Juh
Produkt_A  1200  1500   1800 1400
Produkt_B  2000  1700   1900 2200
Produkt_C   900  1100   1300 1600
Code
rowSums(trzby_matica)
Produkt_A Produkt_B Produkt_C 
     5900      7800      4900 
Code
colSums(trzby_matica)
 Zapad  Stred Vychod    Juh 
  4100   4300   5000   5200 
Code
t(trzby_matica)
       Produkt_A Produkt_B Produkt_C
Zapad       1200      2000       900
Stred       1500      1700      1100
Vychod      1800      1900      1300
Juh         1400      2200      1600

Interpretácia:

Funkcia rowSums() vypočíta celkové tržby jednotlivých produktov a colSums() celkové tržby jednotlivých regiónov. Funkcia t() vymení riadky a stĺpce matice.


6. Vlastné čísla a vlastné vektory

Vlastné čísla a vlastné vektory patria medzi dôležité nástroje lineárnej algebry. V ekonomickej analýze sa využívajú napríklad pri analýze hlavných komponentov (PCA) a pri skúmaní variančno-kovariančných matíc.

Pre štvorcovú maticu A platí:

\[ A v = \lambda v \]

Kde:

  • \(A\) je štvorcová matica.
  • \(\lambda\) je vlastné číslo.
  • \(v\) je príslušný vlastný vektor.

Vytvorenie symetrickej matice

Code
A_eig <- matrix(
  c(4, 2, 1,
    2, 5, 0,
    1, 0, 3),
  nrow = 3,
  byrow = TRUE
)

A_eig
     [,1] [,2] [,3]
[1,]    4    2    1
[2,]    2    5    0
[3,]    1    0    3

Výpočet vlastných čísel a vektorov

Code
eig_A <- eigen(A_eig, symmetric = TRUE)

eig_A
eigen() decomposition
$values
[1] 6.669079 3.476024 1.854897

$vectors
           [,1]       [,2]       [,3]
[1,] -0.6311790  0.3743620  0.6793131
[2,] -0.7563200 -0.4912963 -0.4319815
[3,] -0.1720265  0.7864357 -0.5932333
Code
vlastne_cisla <- eig_A$values
vlastne_vektory <- eig_A$vectors

vlastne_cisla
[1] 6.669079 3.476024 1.854897
Code
vlastne_vektory
           [,1]       [,2]       [,3]
[1,] -0.6311790  0.3743620  0.6793131
[2,] -0.7563200 -0.4912963 -0.4319815
[3,] -0.1720265  0.7864357 -0.5932333

Funkcia eigen() vypočíta vlastné čísla a vlastné vektory matice.

Príkaz $values vyberá vlastné čísla a $vectors vyberá vlastné vektory uložené v stĺpcoch.

Overenie vzťahu Av = λv

Code
lambda <- vlastne_cisla[1]
v <- vlastne_vektory[, 1]

lava_strana <- A_eig %*% v
prava_strana <- lambda * v

lava_strana
          [,1]
[1,] -4.209382
[2,] -5.043958
[3,] -1.147259
Code
prava_strana
[1] -4.209382 -5.043958 -1.147259
Code
all.equal(
  as.vector(lava_strana),
  as.vector(prava_strana)
)
[1] TRUE

Funkcia all.equal() overuje približnú rovnosť výsledkov s prihliadnutím na numerickú presnosť výpočtu.

Malé cvičenie – Analýza symetrickej matice

Zadanie:

Vytvorte vlastnú symetrickú maticu 3 × 3. Pomocou funkcie eigen() vypočítajte jej vlastné čísla a vlastné vektory.

Následne overte, či sa súčet vlastných čísel rovná stope matice a ich súčin determinantu.

Code
B <- matrix(
  c(6, 2, 0,
    2, 3, 1,
    0, 1, 4),
  nrow = 3,
  byrow = TRUE
)

B
     [,1] [,2] [,3]
[1,]    6    2    0
[2,]    2    3    1
[3,]    0    1    4
Code
eig_B <- eigen(B, symmetric = TRUE)

eig_B$values
[1] 7.068708 4.277754 1.653538
Code
eig_B$vectors
          [,1]       [,2]       [,3]
[1,] 0.8717580 -0.2967815 -0.3898189
[2,] 0.4658273  0.2555653  0.8471666
[3,] 0.1517992  0.9201126 -0.3610400
Code
# Súčet vlastných čísel
sum(eig_B$values)
[1] 13
Code
# Stopa matice
sum(diag(B))
[1] 13
Code
# Súčin vlastných čísel
prod(eig_B$values)
[1] 50
Code
# Determinant matice
det(B)
[1] 50
Code
# Overenie
all.equal(
  sum(eig_B$values),
  sum(diag(B))
)
[1] TRUE
Code
all.equal(
  prod(eig_B$values),
  as.numeric(det(B))
)
[1] TRUE

Interpretácia:

Súčet vlastných čísel sa rovná súčtu diagonálnych prvkov matice. Súčin vlastných čísel sa rovná determinantu matice. Pri numerických výpočtoch sa môžu objaviť malé odchýlky spôsobené zaokrúhľovaním.


7. Záver

V tomto dokumente boli demonštrované základné operácie v programovacom jazyku R prostredníctvom vlastných príkladov z ekonomickej praxe.

Práca zahŕňa základné aritmetické výpočty, manipuláciu s textovými premennými, logické operácie, analýzu numerických vektorov a maticové výpočty.

Samostatné cvičenia ukázali možnosti využitia R pri analýze tržieb, nákladov, ziskovosti a pri základných matematických operáciách potrebných na spracovanie ekonomických údajov.