【问题标题】:Conditional replacement of values in entire dataframe有条件地替换整个数据框中的值
【发布时间】:2018-09-10 11:24:30
【问题描述】:

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

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

在这种情况下

> 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 需要列的规范,但我正在寻找整个数据框的动态替换。

谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    基础R

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

    【讨论】:

      【解决方案2】:

      使用replace

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

      【讨论】:

        【解决方案3】:

        dplyr 解决方案:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-10-15
          • 2020-03-14
          • 2020-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多