替换整个 tibble 中的值
replace values throughout a tibble
在 base R 中,我可以使用以下代码在整个数据帧中 remove/replace 值(例如,所有 NA 或大于 0.99 的值)。
df[df > 0.99] <- NA
df[is.na(df)] <- 0L
有没有办法在 tidyverse 中使用 dplyr 执行等效操作?
您可以将 mutate_all
与 replace
一起使用:
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)
在 base R 中,我可以使用以下代码在整个数据帧中 remove/replace 值(例如,所有 NA 或大于 0.99 的值)。
df[df > 0.99] <- NA
df[is.na(df)] <- 0L
有没有办法在 tidyverse 中使用 dplyr 执行等效操作?
您可以将 mutate_all
与 replace
一起使用:
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)