我想将列中的所有NA值都更改为0,将所有其他值更改为1。但是,我无法将case_when和is.na组合使用。
# Create dataframe
a <- c(rep(NA,9), 2, rep(NA, 10))
b <- c(rep(NA,9), "test", rep(NA, 10))
df <- data.frame(a,b, stringsAsFactors = F)
# Create new column (c), where all NA values in (a) are transformed to 0 and other values are transformed to 1
df <- df %>%
mutate(
c = case_when(
a == is.na(.$a) ~ 0,
FALSE ~ 1
)
)
我希望(c)列表示所有0值和一个1值,但全为0。
当我在is.na中使用if_else语句时,它确实起作用,例如:
df <- df %>%
mutate(
c = if_else(is.na(a), 0, 1))
)
这是怎么回事?
答案 0 :(得分:2)
您应该改为这样做:
df %>%
mutate(
c = case_when(
is.na(a) ~ 0,
TRUE ~ 1
)
)