首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dplyr: mutate()和mutate_if()

dplyr: mutate()和mutate_if()
EN

Stack Overflow用户
提问于 2017-03-17 13:27:57
回答 2查看 13.7K关注 0票数 3

我希望将列中的所有NAs更改为0。我可以用mutate()实现,但不能用mutate_if()实现。

这是可行的:

代码语言:javascript
复制
> 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))

但这不是:

代码语言:javascript
复制
> 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-13 21:43:53

或者:

代码语言:javascript
复制
library(tidyr)
replace_na(list(Q3.2 = 0, Q8.2 = 0))
票数 2
EN

Stack Overflow用户

发布于 2017-03-17 20:08:21

这不是mutate_if所做的。它对列而不是行进行谓词,因此与mutate中的ifelse的工作方式不同。要将数字列中的所有NA替换为0,请尝试执行以下操作:

代码语言:javascript
复制
test %>% mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .)))

代码语言:javascript
复制
test %>% mutate_if(is.numeric, coalesce, ... = 0)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42849849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档