Я пытаюсь использовать mutate
и if_else()
, чтобы получить результат следующего логического утверждения, примененного к двум столбцам фрейма данных:
True, если Да в a или b, NA, если NAв обоих случаях FALSE, если оба значения: Нет или Нет & NA
library(magrittr)
library(dplyr)
data.frame(
"a"=c(NA,"No","Yes","Yes","No","No",NA),
"b"=c(NA,"No","Yes","No","Yes",NA,"No")
) %>%
mutate(
logical = if_else(
a == "Yes" | b == "Yes",
TRUE,
if_else(
is.na(a) & is.na(b),
NA,
FALSE
)
)
)
#> a b logical
#> 1 <NA> <NA> NA
#> 2 No No FALSE
#> 3 Yes Yes TRUE
#> 4 Yes No TRUE
#> 5 No Yes TRUE
#> 6 No <NA> NA
#> 7 <NA> No NA
В последних двух строках я получаю NA, а не ожидаемый результат FALSE.Ожидается, потому что is.na(a) & is.na(b)
должен возвращать FALSE, как это показано в примере ниже.
# False as expected here
if_else(is.na(NA) & is.na("No"),NA,FALSE)
#> [1] FALSE
Я что-то упустил из-за того, как if_else
работает?
Созданна 2019-02-06 пакетом представьте (v0.2.1)