vendredi 8 mai 2020

ifelse statement to overrule result when NA is total or partial

I have this data set with 6 variables contain either positive, negative or NA. A new column is required to be generated based on the values of these variables in the following manner:

P if ANY of the 6 variables contain a positive result.

N if NONE of the 6 variables contain a positive result.

NA if ALL of the 6 variables have NA.

MWE

var1 <- c('var1P', 'var1N', 'var1P', 'var1P', NA, 'var1N')
var2 <- c('var2N', 'var2N', 'var2N', 'var2P', NA, 'var2N')
var3 <- c('var3N', 'var3N', 'var3N', 'var3P', NA, 'var3N')
var4 <- c('var4P', 'var4N', 'var4P', 'var4P', NA, 'var4N')
var5 <- c(NA, 'var5N', 'var5N', 'var5P', NA, 'var5N')
var6 <- c(NA, NA, 'var6N', 'var6P', NA, 'var6N')
No <- seq(1:6)

df <- data.frame(No, var1, var2, var3, var4, var5, var6)

Code

dfnew <- df %>%
  dplyr::mutate(varif = ifelse(var1 == 'var1P' | var2 == 'var2P' | var3 == 'var3P' | var4 == 'var4P' | var5 == 'var5P' | var6 == 'var6P', 'P', 'N'))

Output

  No  var1  var2  var3  var4  var5  var6 varif
   1 var1P var2N var3N var4P  <NA> <NA>      P
   2 var1N var2N var3N var4N var5N  <NA>   <NA>
   3 var1P var2N var3N var4P var5N var6N     P
   4 var1P var2P var3P var4P var5P var6P     P
   5  <NA> <NA> <NA> <NA> <NA> <NA>        <NA>
   6 var1N var2N var3N var4N var5N var6N     N

Question

the varif for No 2 should read N instead of NA to make it different from No 5 where all values were NA.

Aucun commentaire:

Enregistrer un commentaire