Hoe na op te nemen in ifelse-instructie in r
Vaak wil je misschien een ifelse- instructie in R gebruiken om een nieuwe kolom in een dataframe te maken waarvan de waarden zijn gebaseerd op de waarden van een bestaande kolom.
Om dit te doen, kunt u de volgende basissyntaxis gebruiken:
df$new_column<- ifelse(df$col1 == ' A ', ' val_if_true ', ' val_if_false ')
Als er echter NA-waarden in een kolom voorkomen, zijn de waarden in de nieuwe kolom automatisch NA.
Om dit te voorkomen, kunt u de functie !is.na() als volgt gebruiken:
df$new_column<- ifelse(df$col1 == ' A ' & !is. na (df$col1) , ' val_if_true ', ' val_if_false ')
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: neem NA op in ifelse-instructie in R
Stel dat we het volgende dataframe in R hebben dat informatie bevat over verschillende basketbalspelers:
#create data frame df <- data. frame (player=c('A', 'B', 'C', 'D', 'E', 'F'), conf=c('West', NA, 'West', 'East', 'East', 'East'), points=c(30, 35, 11, 18, 14, NA)) #view data frame df player conf points 1 A West 30 2 B <NA> 35 3 C West 11 4 D East 18 5 E East 14 6 F East NA
Stel nu dat we proberen een nieuwe kolom te maken met de naam class , die de volgende waarden aanneemt:
- ‚West_Player‘ als conf gelijk is aan ‚West‘
- ‚Anders‘ als conf niet gelijk is aan ‚West‘
De volgende code laat zien hoe u dit doet:
#create new column called 'class' df$class <- ifelse(df$conf == ' West ', ' West_Player ', ' Other ') #view updated data frame df player conf points class 1 A West 30 West_Player 2 B <NA> 35 <NA> 3 C West 11 West_Player 4 D East 18 Other 5 E East 14 Other 6 F East NA Other
Merk op dat de klassewaarde in rij 2 gelijk is aan NA, aangezien de overeenkomstige waarde in de conf- kolom gelijk is aan NA.
Om dit te voorkomen, kunnen we de functie !is.na() als volgt gebruiken:
#create new column called 'class' df$class <- ifelse(df$conf == ' West ' & !is. na (df$conf), ' West_Player ', ' Other ') #view updated data frame df player conf points class 1 A West 30 West_Player 2 B <NA> 35 Other 3 C West 11 West_Player 4 D East 18 Other 5 E East 14 Other 6 F East NA Other
Merk op dat de Klasse- waarde in regel 2 nu gelijk is aan „Overig“ in plaats van NA.
Met behulp van de functie !is.na() hebben we gespecificeerd dat de waarde in de conf- kolom gelijk moet zijn aan ‚West‘ en niet gelijk aan NA, zodat de waarde in de nieuwe klassenkolom ‚West_Player‘ is.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Hoe schrijf je een geneste If Else-instructie in R
Hoe schrijf je een casusverklaring in R
Hoe meerdere kolommen aan een dataframe toe te voegen in R