Как добавить столбец, который содержит определенные значения при выполнении критериев?

#r #for-loop #tibble

#r #for-цикл #tibble

Вопрос:

У меня есть фрейм данных:

 tibble{
x = c(1,2,3)
y = c(0,2,4)
}
  

Я хочу добавить НОВУЮ переменную «z», которая будет:

 z = c("Lower", "Equal", "Higher")
  

Я думал об использовании цикла for, но я не уверен, что это самый эффективный / правильный способ.

Ответ №1:

Новая переменная в наборе данных может быть создана с sign помощью после взятия разности ‘x’ и ‘y’, получения sign значений, преобразования их в factor с levels помощью и соответствующего labels указанного

 library(dplyr)
df1 %>% 
 mutate(z = factor(sign(x - y), levels = c(-1, 0, 1), 
   c('Lower', "Equal", 'Higher')))
  

Или вариант с case_when

 df1 %>%
  mutate(tmp = x - y,
         z = case_when(tmp >0 ~ 'Higher', tmp < 0 ~ 'Lower',
             TRUE ~ 'Equal'), tmp = NULL)
  

данные

 df1 <- tibble(
    x = c(1,2,3),
    y = c(0,2,4))
  

Ответ №2:

Базовый параметр R

 within(df,z <- c("Lower", "Equal", "Higher")[sign(y-x) 2])
  

что дает

 # A tibble: 3 x 3
      x     y z     
  <dbl> <dbl> <chr>
1     1     0 Lower
2     2     2 Equal
3     3     4 Higher