在整个tibble中替换值

时间:2017-11-01 17:02:16

标签: r dplyr tidyverse

在基础R中,我可以使用以下代码删除/替换整个数据帧中的值(例如,所有NA或大于0.99的值)。

df[df > 0.99] <- NA
df[is.na(df)] <- 0L

有没有办法在tidyverse中使用dplyr执行等效操作?

1 个答案:

答案 0 :(得分:3)

您可以将mutate_allreplace

一起使用
df = data.frame(x = c(1.2, 0.4, NA, 0.6), y = c(NA, 0.3, 0.992, 0.5))
df %>% mutate_all(~ replace(., . > 0.99 | is.na(.), 0))
#    x   y
#1 0.0 0.0
#2 0.4 0.3
#3 0.0 0.0
#4 0.6 0.5

或使用funs

df %>% mutate_all(funs(replace(., . > 0.99 | is.na(.), 0)))

如果您只需要将其作为管道的一部分进行集成,replace方法应该有效:

df %>% replace(. > 0.99 | is.na(.), 0)