Home > Blockchain >  How to use dplyr::if_else to mutate across a tibble dataframe?
How to use dplyr::if_else to mutate across a tibble dataframe?

Time:03-10

I wonder how to combine mutate and if_else to transform a data frame into TRUE and FALSE?

For example, mutate a table into TRUE (value >= 2) and FALSE(value <2):

> iris %>% as_tibble() %>% select(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
# A tibble: 150 × 4
   Sepal.Length Sepal.Width Petal.Length Petal.Width
          <dbl>       <dbl>        <dbl>       <dbl>
 1          5.1         3.5          1.4         0.2
 2          4.9         3            1.4         0.2
 3          4.7         3.2          1.3         0.2
 4          4.6         3.1          1.5         0.2
 5          5           3.6          1.4         0.2
 6          5.4         3.9          1.7         0.4
 7          4.6         3.4          1.4         0.3
 8          5           3.4          1.5         0.2
 9          4.4         2.9          1.4         0.2
10          4.9         3.1          1.5         0.1
# … with 140 more rows

into

   Sepal.Length Sepal.Width Petal.Length Petal.Width
          <dbl>       <dbl>        <dbl>       <dbl>
 1          T           T            F           F
 2          T           T            F           F
 3          T           T            F           F
 4          T           T            F           F
 5          T           T            F           F
 6          T           T            F           F
 7          T           T            F           F

Thanks a lot!

CodePudding user response:

iris %>%
  mutate(across(where(is.numeric), ~ . >= 2))

You don't need if_else when the result you want is TRUE or FALSE. Generally, ifelse(test, TRUE, FALSE) is a long way of writing test.

Or in base R

iris[1:4] >= 2
  • Related