有条件地替换整个数据框中的值

时间:2018-09-10 11:24:31

标签: r

在不指定行或列的情况下替换整个数据框中的值的合适方法是什么?

让我们假设我想将abs(x) > .5的所有值替换为<- "duck"

在这种情况下

> df <- data.frame(a = rnorm(5), b = rnorm(5), c = rnorm(5))
> df
            a          b          c
1  1.37481216 -0.1760366 -0.5122730
2  0.09204844 -0.4270991  0.3211998
3 -0.43563818  0.7560178  0.5399643
4 -0.02078887  0.5961020 -0.5985515
5  0.99129234 -0.9959395 -0.6488177

所需的输出将是

            a          b          c
1  "duck"     -0.1760366  "duck"
2  0.09204844 -0.4270991  0.3211998
3 -0.43563818  "duck"     "duck"
4 -0.02078887  "duck"     "duck"
5  "duck"      "duck"     "duck"

虽然this post需要列的说明,但我正在寻找整个数据帧的动态替换。

谢谢

3 个答案:

答案 0 :(得分:1)

基本R

df[abs(df) > 0.5] <- "duck"

答案 1 :(得分:1)

使用replace

replace(df,abs(df)>0.5,"duck")

答案 2 :(得分:1)

一种dplyr解决方案:

df %>% 
  mutate_all(funs(ifelse(abs(.) > .5, "duck", .)))