Если я вас правильно понял, вы хотите заменить все NA
в векторе на 0
, а если есть значение 1
.
как сказал @Maurits Evers, вы можете сделать это так:
require(tidyverse)
df %>%
mutate(x = ifelse(is.na(x), 0, 1))
Кроме того, вы можете получить тот же результат, используя case_when
:
df %>%
mutate(x = case_when(
is.na(x) ~ 0,
TRUE ~ 1))
Кроме того, вы можете сделать это с помощью базы R:
df[which(abs(df$x) >= 0), ] <- 1
df$x[is.na(df$x), ] <- 0
Как предполагает @Tino, другой вариант базового R может использовать transform()
и ifelse()
.
transform(df, x = ifelse(is.na(x), 0, 1))
образец набора данных:
df <- data.frame(x = c(NA, 1, 2, NA, 3))