首页 > 解决方案 > 使用 dplyr 将所有高于阈值的值更改为 NA

问题描述

我有一个数字数据框,我想将所有超过 8 的值更改为 NA。我知道还有其他方法可以做到这一点,但我想使用 dplyr 来完成此操作,因此我可以将管道与我拥有的其他代码一起使用。

df <- data.frame(c(1:9), c(2:10))

这是我迄今为止尝试过的:

library(dplyr)

df %>%
  mutate(across(everything(), function(x) ifelse(x>8, NA, x)))

df %>%
  mutate(across(everything(), function(x) na_if(x >8)))

标签: rdataframefunctiondplyrpipe

解决方案


我们可以将输出分配给原始对象以进行这些更改,因为%>%不会执行控制台上打印的输出。

df <- df %>% 
       mutate(across(everything(), ~ ifelse(. > 8, NA, .)))

或者另一种选择是%<>%运营商来自magrittr

library(magrittr)
df %<>%
    mutate(across(everything(), ~ ifelse(. > 8, NA, .)))

推荐阅读