代码之家  ›  专栏  ›  技术社区  ›  Comfort Eagle

在整个数据帧中有条件地替换值

r
  •  0
  • Comfort Eagle  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  1
  •   Wimpel    7 年前

    底部R

    df[abs(df) > 0.5] <- "duck"
    
        2
  •  1
  •   Saurabh Chauhan    7 年前

    replace :

    replace(df,abs(df)>0.5,"duck")
    
        3
  •  1
  •   tmfmnk    7 年前

    A dplyr 解决方案:

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