【问题标题】:Combine mutate with conditional statement using a formula in r使用 r 中的公式将 mutate 与条件语句相结合
【发布时间】:2021-05-26 10:12:07
【问题描述】:

我正在尝试根据包含公式的条件来改变我的数据框。我正在考虑将 mutate 与 if_else 或 case_when 结合使用(不确定两者之间的确切区别是什么),但这对我不起作用。

我的数据框如下所示:

> dat.example
               t1             t2      Rg Rg_SE
1              WT            Fat  0.6818 0.0962
2              WT          FatPC  0.1853 0.1354
3              WT            DTD -0.1684 0.1232
4             Fat        DefCode      NA 0.1608

如果列 Rg_SE 乘以 2 中的值大于列 Rg 中的绝对值,我想做的是将列 Rg 中的值更改为“NA”。应忽略 Rg 列中的 NA 值。 所以,输出应该是这样的:

> output
               t1             t2      Rg Rg_SE
1              WT            Fat  0.6818 0.0962
2              WT          FatPC      NA 0.1354
3              WT            DTD      NA 0.1232
4             Fat        DefCode      NA 0.1608

现在我已经使用了这段代码:

dat.example2 <- dat.example %>% mutate(Rg = if_else(Rg_SE*2 > abs(as.numberic(as.character(Rg))) ~ "NA"))

这给了我这个错误信息:

Error: Problem with `mutate()` input `Rg`.

x condition 必须是逻辑向量,而不是 formula 对象。 i 输入Rgif_else(Rg_SE * 2 &gt; abs(as.numberic(as.character(Rg))) ~ "NA")

有没有人知道如何做到这一点?非常感谢!

【问题讨论】:

  • as.numberic() 是错字吗?如果您将其更改为as.numeric(),您的代码是否有效?
  • 试试if_else(Rg_SE * 2 &gt; abs(as.numeric(Rg)), NA_real_, Rg))。顺便说一句:看起来Rg 已经是一个数字了。所以as.numeric 可能没有必要。
  • 尝试搜索帮助以找到正确的两种语法编写方式。 ?if_else?case_when

标签: r if-statement tidyverse dplyr case-when


【解决方案1】:

这是一种可能的解决方案:

library(tidyverse)
df <- read.table(text = "               t1             t2      Rg Rg_SE
1              WT            Fat  0.6818 0.0962
2              WT          FatPC  0.1853 0.1354
3              WT            DTD -0.1684 0.1232
4             Fat        DefCode      NA 0.1608", header = TRUE)

df %>% 
  mutate(Rg = ifelse((Rg_SE*2) > abs(as.numeric(as.character(Rg))), NA, Rg))
#   t1      t2     Rg  Rg_SE
#1  WT     Fat 0.6818 0.0962
#2  WT   FatPC     NA 0.1354
#3  WT     DTD     NA 0.1232
#4 Fat DefCode     NA 0.1608

【讨论】:

    猜你喜欢
    • 2018-08-05
    • 2022-12-06
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2018-09-01
    • 2019-04-10
    • 2017-10-29
    相关资源
    最近更新 更多