Перекодировать / заменить переменные условно с R dyplyr? - PullRequest
1 голос
/ 20 января 2020

Я пытаюсь использовать следующий код, чтобы условно перекодировать мои переменные, чтобы значения в var 2 заменялись на NA, если в var1 есть какое-либо значение больше 0. Если var1 не имеет значения больше 0 (которое закодировано как NA), тогда значение в var2 должно оставаться без изменений. Строка кода ниже кодирует все в var2 в NA и не сохраняет значения в var2, если var1 равен NA. Я также пытался использовать na_if () и coalesce () с небольшим успехом. Можно ли исправить это?

df <-  df %>% 
    mutate(var2 = if_else(var1 > 0, NA, var2 = TRUE ))

1 Ответ

2 голосов
/ 20 января 2020

Нам не нужно var2 = TRUE, вместо этого оно должно быть var2

library(dplyr)
df %>%
    mutate(var2 = ifelse(var1 > 0 , NA, var2))

if_else с указанием типа c, поэтому возможно. необходимо иметь правильный NA тип, соответствующий типу 'var2'. Предполагая, что это numeric

df %>%
   mutate(var2 = if_else(var1 > 0, NA_real_, var2))

Но это также можно сделать с помощью

df %>%
    mutate(var2 = replace(var2, var1 > 0, NA))

или case_when

df %>%
     mutate(var2 = case_when(var1 > 0 ~ NA_real_, TRUE ~ var2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...