Kontroll

Små kontrollprosesser

For å sammenligne og gjøre noe basert på en betingelse kan vi bruke ifelse(). Vi må spesifisere betingelsen først, og så hva som skal returneres dersom betingelsen er sann, og så hva som skal returneres om betingelsen er usann.

alder <- c(49, 39, 51, 73, 41)
ifelse(alder < 50, "yngre", "eldre")
[1] "yngre" "yngre" "eldre" "eldre" "yngre"

Dette kan brukes for å lage nye variabler i et datasett:

library(tidyverse)
── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
✔ ggplot2 3.4.0      ✔ purrr   1.0.1 
✔ tibble  3.1.8      ✔ dplyr   1.0.10
✔ tidyr   1.2.1      ✔ stringr 1.5.0 
✔ readr   2.1.3      ✔ forcats 0.5.2 
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
dt <- data.frame(id = 1:5, alder)
dt %>%
  mutate(alder_kat = ifelse(alder < 50, "yngre", "eldre"))
  id alder alder_kat
1  1    49     yngre
2  2    39     yngre
3  3    51     eldre
4  4    73     eldre
5  5    41     yngre

Store prosesser

For å kontrollere store/lengre prosesser kan vi benytte if og else. Disse kan gå over flere linjer og ta formatet:

if (betingelsen){
  gjør dette ...
} else {
  gjøre dette istedenfor ...
}

For eksempel:

if (all(dt$alder < 70)){
  print("Alle IOer er under 70")
} else {
  print("Alle IOer med alder 70+ er fjernet.")
  dt %>% 
    filter(alder < 70)
}
[1] "Alle IOer med alder 70+ er fjernet."
  id alder
1  1    49
2  2    39
3  3    51
4  5    41