Если тогда еще в пакете dplyr

#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