Как я могу сделать условную замену в R?
Это простая условная задача в R.
вот пример фрейма данных. "" Представляет пробелы
>df
A B
1 Y
1 N
"" Y
0 N
"" N
1 Y
0 Y
"" N
0 Y
Я пытаюсь проверить, если df$B == "Y", то вывести 1 в df$A на пустых местах.
я пытался df$A[df$A == ""] <- df$B[df$B == "Y"]
это меняет все пустые места на "Y".
Пожалуйста помоги!
1 ответ
Решение
Это то, что вы после?
library("dplyr")
library("tibble")
df <-
tibble::tribble(
~A, ~B,
1, "Y",
1, "N",
"", "Y",
0, "N",
"", "N",
1, "Y",
0, "Y",
"", "N",
0, "Y")
df %>% mutate(A = ifelse(B == "Y" & A == "",1,A))
#> # A tibble: 9 x 2
#> A B
#> <chr> <chr>
#> 1 1 Y
#> 2 1 N
#> 3 1 Y
#> 4 0 N
#> 5 N
#> 6 1 Y
#> 7 0 Y
#> 8 N
#> 9 0 Y
А вот и базовая версия:
df$A <- ifelse(df$B == "Y" & df$A == "",1,df$A)