【问题标题】:Perform conditional calculations in a R data frame在 R 数据框中执行条件计算
【发布时间】:2021-06-17 16:25:53
【问题描述】:

我在 R 中的数据框中有这样的数据:

价值 |指标

10 |公斤 5 |磅等

我想创建一个新列(重量),我可以在其中根据 Metric 计算转换后的重量 - 例如 if Metric = "Kg" then Value * 1, if Metric = "lbs" then Value * 2.20462

我还有另一个用例,我想做类似的条件计算,但基于连续值,即如果 x >= 2 然后“分类” elseif x >= 1 然后“分类 2”否则“其他”

在 R 中可能适用于两者的任何想法?

【问题讨论】:

    标签: r


    【解决方案1】:

    这行得通吗:

    library(dplyr)
    df %>% mutate(converted_wt = case_when(Metric == 'lbs' ~ Value * 2.20462, TRUE ~ Value))
      Value Metric converted_wt
    1    10     KG      10.0000
    2     5    lbs      11.0231
    

    如果您有除“KG”和“lbs”之外的其他单位,则需要相应地将它们包含在case_when 条件中。

    【讨论】:

    • 我希望它会 - 它看起来正确,但我收到了这个错误:错误:mutate() 输入问题C_Weight。 x 二元运算符的非数字参数 i 输入 C_Weightcase_when(Metric == "lbs" ~ Value * 2.20462, TRUE ~ Value)
    • @MorneLippiatt,你能检查Value 列的数据类型吗?是数字吗?
    • 不是……怎么改?我试过 as.numeric 但又收到一个错误,说它不能被强制加倍。
    • 我想我明白了!使用了 mutate(Value = as.numeric(DF$Value)) ,这似乎奏效了。谢谢!
    猜你喜欢
    • 2021-12-31
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多