【问题标题】:Multiply and replace values in data frame according to condition in R [duplicate]根据R中的条件乘以和替换数据框中的值[重复]
【发布时间】:2019-12-07 08:20:40
【问题描述】:

我是 R 新手,我一直在尝试乘以和替换我的数据框中的某些值,但没有成功。基本上,我想做的是当我的 df (任何列)中的值是 0

看看我的 df 以防万一……

    'data.frame':   404 obs. of  15 variables:
    $ D3: num  16.1 17.1 16.1 16.1 17.2 ...
    $ TH   : num  9.9 8.6 9.7 7.7 7.6 7.6 8.7 9.8 9.8 7.7 ...
    $ D2 : num  33.3 29.3 30.3 29.3 33.3 ...
    $ D1 : num  15.1 14.1 21.1 16.1 19.1 ...
    $ P : num  20.7 14.1 19.2 18.2 12.1 ...
    $ D5 : num  9.9 11.1 11.9 11.1 11.1 ...
    $ D13: num  13.1 14.1 13.1 13.8 12.9 ...
    $ D7 : num  11.8 11.1 12.1 14.1 12.1 ...
    $ D16: num  12.9 12.1 12.9 11.1 12.9 12

例如,如果我的数据框中的值是 0.15,我希望它是 15。

【问题讨论】:

    标签: r dataframe replace conditional-statements multiplication


    【解决方案1】:

    一个选项是基于表达式创建一个逻辑矩阵。从数据集中提取值,乘以 10 并更新结果

    i1 <- df1 >0 & df1 < 1
    df1[i1] <- df1[i1] * 10
    

    如果我们不想替换初始对象,则使用replace

    df2 <- replace(df1, i1, df1[i1] * 10)
    

    带有一些额外检查列类型的tidyverse 选项将是

     library(dplyr)
     df1 %>%
        mutate_if(is.numeric, ~ case_when(between(., 0, 1) ~ . * 10, TRUE ~ .))
    

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 2021-04-13
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2020-04-24
      • 2018-05-04
      相关资源
      最近更新 更多