rif-statementna

How can I assign NA?


I use the mtcars dataframe and I use the following code to assign NA to all the values of columns drat and wt <=3.

df <- mtcars %>%
mutate(across(c(drat, wt), ~ifelse(.x<=3, NA, .x)))

How can I modify the code in a way that let me to assign NA also to the values of the column qsec if the value of drat or wt in the same row is <=3? At the end I want that each row where drat or wt is NA has NA also in the column qsec. Thanks


Solution

  • We may use if_any on the columns that are changed to NA to return a logical vector to replace values in 'qsec'

    library(dplyr)
    mtcars1 <- mtcars %>%
          mutate(across(c(drat, wt), ~ifelse(.x<=3, NA, .x)),
        qsec = ifelse(if_any(c(drat, wt), is.na), NA, qsec))
    

    -output

    > head(mtcars1)
                       mpg cyl disp  hp drat    wt  qsec vs am gear carb
    Mazda RX4         21.0   6  160 110 3.90    NA    NA  0  1    4    4
    Mazda RX4 Wag     21.0   6  160 110 3.90    NA    NA  0  1    4    4
    Datsun 710        22.8   4  108  93 3.85    NA    NA  1  1    4    1
    Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    Valiant           18.1   6  225 105   NA 3.460    NA  1  0    3    1