2017-03-17 7 views
0

カラムのすべてのNAsを0に変更したい。 mutate()で行うことができますが、mutate_if()ではできません。dplyr: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 

答えて

2

mutate_ifが何をするかではないこと。行ではなく列に述語を当てるので、ifelseと同じ働きをしません。mutateです。数値列で0 sのすべてNA Sを交換するには、例えばを試してみてください:

test %>% mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .))) 

それとも

test %>% mutate_if(is.numeric, coalesce, ... = 0) 
関連する問題