Case_when и or if_else dplyr - когда NA использует значения из другого столбца - PullRequest
0 голосов
/ 04 июня 2019

Я хочу использовать значения из другого столбца для замены значений NA.В этом примере мои последние четыре значения в моем df имеют NA в столбце «count» - я хочу заменить NA на значения из столбца «value».

Вот набор фиктивных данных

df <- structure(list(First = structure(c(17995, 17997, 17929, 17919, 
17808, 18031, NA, NA, NA, NA), class = "Date"), Last = 
structure(c(17999, 
17998, 17929, 17919, 17809, 18031, 17965, 17965, 17965, 17965
), class = "Date"), days = c(5, 2, 1, 1, 2, 1, NA, NA, NA, NA
), variable = structure(c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L, 2L, 
3L), .Label = c("0-12", "0-25", "0-50", "0-100"), class = "factor"), 
value = c(1, 0, 1, 1, 1, 1, 1, 0, 1, 1), count = c(5, 0, 
1, 1, 2, 1, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-10L))

некоторые мысли о том, как это можно решить .... но это не работает из-за моих плохих навыков кодирования:

 df <- df %>%
 mutate(a = if_else(count == NA, value, if_else(count >=0, count, a)))

или, возможно, есть какой-то способ с case_when?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019
library(dplyr)
df <- df %>%
  dplyr::mutate(a = ifelse(is.na(count), value,
                           ifelse(count >= 0, count, "error")))
0 голосов
/ 04 июня 2019

ты почти там

df <- df %>% mutate(a= ifelse(is.na(count), value, count))
...