Vektory

Vytvorenie vektorov

c1 <- seq(0, 100, by = 10)      # postupnosť po 10
c2 <- rep(letters[1:3], times = 3) # opakovanie znakov
c3 <- runif(8, min = 50, max = 100) # náhodné čísla od 50 do 100
c4 <- rnorm(8, mean = 5, sd = 1.5)  # normálne rozdelenie
c1; c2; c3; c4
##  [1]   0  10  20  30  40  50  60  70  80  90 100
## [1] "a" "b" "c" "a" "b" "c" "a" "b" "c"
## [1] 96.84072 66.36228 96.69390 79.05656 82.46467 94.83894 74.67232 57.96308
## [1] 4.612264 8.654606 5.914233 3.806943 7.381813 2.286878 4.555944 4.500505

Operacie

u <- c(1,3,5,7,9)
u * 2
## [1]  2  6 10 14 18
u + 100
## [1] 101 103 105 107 109
sqrt(u)
## [1] 1.000000 1.732051 2.236068 2.645751 3.000000
sum(u)
## [1] 25

1. Malé cvičenie

Vytvorime vektor čísel od 200 do 220 a zisti, koľko čísel je deliteľných 5.

v <- 200:220
sum(v %% 5 == 0)
## [1] 5

Matice

Vytvorenie matic

P <- matrix(1:9, nrow = 3, byrow = TRUE)
Q <- matrix(10:18, nrow = 3)
P; Q
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
##      [,1] [,2] [,3]
## [1,]   10   13   16
## [2,]   11   14   17
## [3,]   12   15   18

Operacie

P + Q
##      [,1] [,2] [,3]
## [1,]   11   15   19
## [2,]   15   19   23
## [3,]   19   23   27
P * Q
##      [,1] [,2] [,3]
## [1,]   10   26   48
## [2,]   44   70  102
## [3,]   84  120  162
P %*% t(Q)
##      [,1] [,2] [,3]
## [1,]   84   90   96
## [2,]  201  216  231
## [3,]  318  342  366

2. Male cvienie

Vytvorime jednotkovú maticu veľkosti 4x4 a vypočítaj jej determinant.

I <- diag(4)
det(I)
## [1] 1

Chybajuce hodnoty

z <- c(NA, 15, 20, NA, 25, 30)
is.na(z)
## [1]  TRUE FALSE FALSE  TRUE FALSE FALSE
mean(z, na.rm = TRUE)
## [1] 22.5

3. Male cvičenie

Nahradime všetky NA hodnotou priemeru (bez NA).

z[is.na(z)] <- mean(z, na.rm = TRUE)
z
## [1] 22.5 15.0 20.0 22.5 25.0 30.0

Štatistiky a zoradenie

s <- c(3, 8, 12, 5, 9, 14, 1)
summary(s)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   4.000   8.000   7.429  10.500  14.000
sort(s)
## [1]  1  3  5  8  9 12 14
which.max(s)
## [1] 6
which.min(s)
## [1] 7

4. Male cvičenie

Zistime rozsah (max - min) vo vektore s.

max(s) - min(s)
## [1] 13

Moj navrh použitia novinky

Ako novinku ukážeme prácu s tidyr a readr – budeme importovať CSV a transformovať dáta.

library(readr)
library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Vytvoríme malý dataset a uložíme ho ako CSV
df <- data.frame(
  meno = c("Yuliia", "Kristina", "Danila"),
  predmet1 = c(90, 75, 85),
  predmet2 = c(88, 92, 79)
)
write_csv(df, "moje_data.csv")

# Načítame ho späť
data <- read_csv("moje_data.csv")
## Rows: 3 Columns: 3
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): meno
## dbl (2): predmet1, predmet2
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
data
# Pomocou tidyr premeníme dáta do "dlhého formátu"
dlhe <- pivot_longer(data, cols = starts_with("predmet"),
                     names_to = "predmet", values_to = "skore")
dlhe
# A pomocou dplyr zistíme priemerné skóre
dlhe %>% group_by(meno) %>% summarise(priemer = mean(skore))