Как я могу сделать условную замену в 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)
Другие вопросы по тегам