Výběr části vektoru, výběr na základě podmínky

Použijme opět naši proměnnou ranniTep.

ranniTep <- c(65, 58, 72, NA, 66, 65, NA, 70)  # NA je uvedeno u dnů, kdy se subjekt zapomněl změřit

Z vektoru můžeme vybrat jen určitou část podle indexů v hranatých závorkách [], např. první až třetí prvek – pro označení rozsahu použijeme dvojtečku.

ranniTep[1:3]
## [1] 65 58 72

Takový výsledek můžeme samozřejmě uložit opět do nějaké proměnné, a nebo poslat rovnou jako vstup funkci.

mean(ranniTep[1:3])
## [1] 65

Vybírat můžeme i na základě podmínky.

ranniTep >= 70  # pro každou hodnotu vrátí, zda splňuje podmínku. NA značí chybějící hodnotu, takže neví.
## [1] FALSE FALSE  TRUE    NA FALSE FALSE    NA  TRUE
which(ranniTep >= 70)  # vrátí indexy položek, kde je podmínka splněna TRUE (takže FALSE a NA se ignorují).
## [1] 3 8
ranniTep[which(ranniTep >= 70)] # tyto indexy použijeme pro výběr hodnot, které chceme
## [1] 72 70

K dispozici máme pro tyto podmínky následující operátory:

Pozn. nebo má význam “alespoň jedna podmínka musí platit”, mohou tedy nastat situace, že platí obě, a je to také bráno jako TRUE.

ranniTep[which(ranniTep >= 70 | ranniTep < 60)]   # vypíše hodnoty, které jsou větší nebo rovno 70, nebo menší než 60
## [1] 58 72 70
ranniTep[which(ranniTep > 60 & ranniTep < 70)]  # hodnoty vyšší než 60 a zároveň nižší než 70
## [1] 65 66 65

Úlohy

  1. Vypočtěte průměr z 3. až 5. hodnoty proměnné ranniTep. Vyšlo vám 69?
  2. Vypočtěte průměr z hodnot, které jsou vyšší než 60. Vyšlo vám také 67.6?

© 6. 3. 2015 Tomáš Bořil, borilt@gmail.com