2.9 Conditional calculations - if_else()
And finally, we combine the filtering operators (==
, >
, <
, etc) with the if_else()
function to create new columns based on a condition.
## # A tibble: 3 x 5
## id group measurement date above_threshold
## <chr> <chr> <dbl> <dttm> <chr>
## 1 ID1 Control 1.8 2017-01-02 12:00:00 Below three
## 2 ID2 Treatment 4.5 2018-02-03 13:00:00 Above three
## 3 ID3 Treatment 3.7 2019-03-04 14:00:00 Above three
We are sending typesdata
into a mutate()
function, we are creating a new column called above_threshold
based on whether measurement
is greater or less than 3.
The first argument to if_else()
is a condition (in this case that measurement is greater than 3), the second argument is the value if the condition is TRUE, and the third argument is the value if the condition is FALSE.
It reads, “if this condition is met, return this, else return that”.
Look at each line in the tibble above and convince yourself that the threshold
variable worked as expected.
Then look at the two closing brackets - ))
- at the end and convince yourself that they are both needed.
if_else()
and missing values tip: for rows with missing values (NAs), the condition returns neither TRUE nor FALSE, it returns NA. And that might be fine, but if you want to assign a specific group/label for missing values in the new variable, you can add a fourth argument toif_else()
, e.g.,if_else(measurement > 3, "Above three", "Below three", "Value missing")
.