Case_when() gebruiken in dplyr


De functie case_when() uit het dplyr- pakket in R kan worden gebruikt om nieuwe variabelen te maken op basis van bestaande variabelen.

Deze functie gebruikt de volgende basissyntaxis:

 library (dplyr)

df %>%
  mutate (new_var = case_when (var1 < 15 ~ ' low ',
                             var2 < 25 ~ ' med ',
                             TRUE ~ ' high '))

Merk op dat TRUE gelijk is aan een „else“-instructie.

De volgende voorbeelden laten zien hoe u deze functie in de praktijk kunt gebruiken met het volgende dataframe:

 #create data frame
df <- data. frame (player = c('AJ', 'Bob', 'Chad', 'Dan', 'Eric', 'Frank'),
                 position = c('G', 'F', 'F', 'G', 'C', NA),
                 points = c(12, 15, 19, 22, 32, NA),
                 assists = c(5, 7, 7, 12, 11, NA))

#view data frame
df

  player position points assists
1 AJ G 12 5
2 Bob F 15 7
3 Chad F 19 7
4 Dan G 22 12
5 Eric C 32 11
6 Frank NA NA NA

Voorbeeld 1: Maak een nieuwe variabele van een bestaande variabele

De volgende code laat zien hoe u een nieuwe variabele maakt met de naam kwaliteit , waarvan de waarden zijn afgeleid van de puntenkolom :

 df %>%
mutate (quality = case_when (points > 20 ~ ' high ',
                             points > 15 ~ ' med ',
                             TRUE ~ ' low ' ))

  player position points assists quality
1 AJ G 12 5 low
2 Bob F 15 7 low
3 Chad F 19 7 med
4 Dan G 22 12 high
5 Eric C 32 11 high
6 Frank NA NA NA low

Hier ziet u precies hoe de functie case_when() de waarden voor de nieuwe kolom heeft gemaakt:

  • Als de waarde in de puntenkolom groter is dan 20, is de waarde in de kwaliteitskolom ‚hoog‘.
  • Anders, als de waarde in de puntenkolom groter is dan 15, is de waarde in de kwaliteitskolom ‚med‘.
  • Anders, als de waarde in de puntenkolom kleiner is dan of gelijk is aan 15 (of een ontbrekende waarde zoals NA), dan is de waarde in de kwaliteitskolom ‚laag‘.

Voorbeeld 2: Maak een nieuwe variabele uit meerdere variabelen

De volgende code laat zien hoe u een nieuwe variabele maakt met de naam kwaliteit , waarvan de waarden zijn afgeleid van de punten- en hulpkolommen :

 df %>%
mutate (quality = case_when (points > 15 & assists > 10 ~ ' great ',
                             points > 15 & assists > 5 ~ ' good ',
                             TRUE ~ ' average ' ))

  player position points assists quality
1 AJ G 12 5 average
2 Bob F 15 7 average
3 Chad F 19 7 good
4 Dan G 22 12 great
5 Eric C 32 11 great
6 Frank NA NA NA average

Merk op dat we ook de functie is.na() kunnen gebruiken om tekenreeksen expliciet toe te wijzen aan NA-waarden:

 df %>%
mutate (quality = case_when (is. na (points) ~ ' missing ',
                             points > 15 & assists > 10 ~ ' great ',
                             points > 15 & assists > 5 ~ ' good ',
                             TRUE ~ ' average ' ))

  player position points assists quality
1 AJ G 12 5 average
2 Bob F 15 7 average
3 Chad F 19 7 good
4 Dan G 22 12 great
5 Eric C 32 11 great
6 Frank NA NA NA missing

Aanvullende bronnen

Hoe lijnen in R te rangschikken
Hoe observaties per groep te tellen in R
Hoe rijen te filteren die een bepaalde string bevatten in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert