我想将列中的所有NA更改为0。
我可以使用mutate()
,但不能使用mutate_if()
。
这有效:
> test <- tibble(Q3.2 = c(1,2, NA, NA, 3),
Q8.2 = c(2, NA, 1, NA, 4))
> test %>% select_("Q3.2", "Q8.2") %>%
mutate(Q3.2 = ifelse(is.na(Q3.2), 0, Q3.2),
Q8.2 = ifelse(is.na(Q8.2), 0, Q8.2))
但这不是:
> test %>% select_("Q3.2", "Q8.2") %>%
+ mutate_if(is.na(.), 0, .)
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'p' of mode 'function' was not found
答案 0 :(得分:7)
这不是mutate_if
所做的。它预测列而不是行,因此与ifelse
中的mutate
不同。要在数字列中用NA
替换所有0
s,请尝试例如:
test %>% mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .)))
或者
test %>% mutate_if(is.numeric, coalesce, ... = 0)
答案 1 :(得分:1)
OR:
library(tidyr)
replace_na(list(Q3.2 = 0, Q8.2 = 0))