I am trying to use dplyr::case_when
within dplyr::mutate
to create a new variable where I set some values to missing and recode other values simultaneously.
However, if I try to set values to NA
, I get an error saying that we cannot create the variable new
because NA
s are logical:
Error in mutate_impl(.data, dots) :
Evaluation error: must be type double, not logical.
Is there a way to set values to NA
in a non-logical vector in a data frame using this?
library(dplyr)
# Create data
df <- data.frame(old = 1:3)
# Create new variable
df <- df %>% dplyr::mutate(new = dplyr::case_when(old == 1 ~ 5,
old == 2 ~ NA,
TRUE ~ old))
# Desired output
c(5, NA, 3)