Come includere na nell'istruzione ifelse in r


Spesso potresti voler utilizzare un’istruzione ifelse in R per creare una nuova colonna in un frame di dati i cui valori sono basati sui valori di una colonna esistente.

Per fare ciò, è possibile utilizzare la seguente sintassi di base:

 df$new_column<- ifelse(df$col1 == ' A ', ' val_if_true ', ' val_if_false ')

Tuttavia, se in una colonna sono presenti valori NA, i valori nella nuova colonna saranno automaticamente NA.

Per evitare ciò, puoi utilizzare la funzione !is.na() come segue:

 df$new_column<- ifelse(df$col1 == ' A ' & !is. na (df$col1) , ' val_if_true ', ' val_if_false ')

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: includere NA nell’istruzione ifelse in R

Supponiamo di avere il seguente frame di dati in R che contiene informazioni su vari giocatori di basket:

 #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

Supponiamo ora di provare a creare una nuova colonna chiamata class che assume i seguenti valori:

  • ‘West_Player’ se conf è uguale a ‘West’
  • ‘Altro’ se conf non è uguale a ‘Ovest’

Il codice seguente mostra come eseguire questa operazione:

 #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

Tieni presente che il valore della classe nella riga 2 è uguale a NA poiché il valore corrispondente nella colonna conf è uguale a NA.

Per evitare ciò, possiamo usare la funzione !is.na() come segue:

 #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

Tieni presente che il valore Classe nella riga 2 ora è uguale a “Altro” anziché NA.

Utilizzando la funzione !is.na() , abbiamo specificato che il valore nella colonna conf deve essere uguale a ‘West’ e non uguale a NA affinché il valore nella nuova colonna class sia ‘West_Player’.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

Come scrivere un’istruzione If Else annidata in R
Come scrivere una dichiarazione di caso in R
Come aggiungere più colonne al frame di dati in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *