#r #if-statement #dplyr
#r #if-оператор #dplyr
Вопрос:
Какую логику использовать для ‘if then else’ в dplyr
? Если я хочу сказать: «если x
больше y
, возвращайте 1
«, я бы сделал это.
newdf<- df %>% mutate(newvar = case_when(x > y ~ 1))
Я хочу сказать, если x
больше, чем y
, верните 1
, else 0
.
Как мне это написать?
Комментарии:
1. Вам не нужны никакие if/else или case_when, т.е.
df %>% mutate(newvar = as.integer(x > y))
Ответ №1:
Вы также можете использовать :
newdf = df %>% mutate(newvar = ifelse(x > y, 1, 0))
Или с помощью case_when :
newdf = df %>% mutate(newvar = case_when(x > y ~ 1, x <= y ~0))
#or
newdf = df %>% mutate(newvar = case_when(x > y ~ 1, TRUE ~ 0))
Условие TRUE, используемое в case_when, относится ко всем элементам, которые являются ЛОЖНЫМИ в предыдущих условиях.
Комментарии:
1. чтобы быть полностью
tidyverse
, вы должны использоватьif_else