увеличьте числовое значение переменной на основе уровня категориальной переменной

#r #variables #dplyr

Вопрос:

Не вижу другого такого вопроса, как этот. Я использовал mutate для создания новых переменных, но не могу найти учебник, в котором показано, как это сделать: я пытаюсь добавить 2 к значению hsi, если значение con равно NALFD

 con <- c('NALFD', 'NALFD', 'NALFD', 'NASH', 'NASHCC')
hsi <- c(45.71571, 37.09238, 48.89828, 46.37123, 39.8328)
df <- data.frame(con, hsi)
 

Таким образом, hsi должен быть: 47.71571, 39.09238, 50.89828, 46.37123, 39.8328

Спасибо.

Ответ №1:

Вы можете использовать if_else

 library(dplyr)

df <- df %>% mutate(hsi = if_else(con == 'NALFD', hsi   2, hsi))
df
#     con      hsi
#1  NALFD 47.71571
#2  NALFD 39.09238
#3  NALFD 50.89828
#4   NASH 46.37123
#5 NASHCC 39.83280
 

Также в базе R —

 df <- transform(df, hsi = ifelse(con == 'NALFD', hsi   2, hsi))
 

Комментарии:

1. Не работает с моим полным набором данных со 158 строками m <- m %>% dplyr::мутировать(HSI = if_else(Индикация == ‘NALFD’, HSI 2, HSI)) проблеск(m), 45.71571, 37.09238 — 37 должно быть 39, первый не NALFD

2. Похоже, использование «» вместо » вокруг НАЖБП сделало свое дело. Имеет ли это смысл?

3. Ронак — вы удалили свой комментарий. Я хотел ответить. Еще раз, что это было?

4. работает, должно быть, была опечатка, но вот подмножество — sub