【发布时间】: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 输入Rg 是if_else(Rg_SE * 2 > abs(as.numberic(as.character(Rg))) ~ "NA")。
有没有人知道如何做到这一点?非常感谢!
【问题讨论】:
-
as.numberic()是错字吗?如果您将其更改为as.numeric(),您的代码是否有效? -
试试
if_else(Rg_SE * 2 > abs(as.numeric(Rg)), NA_real_, Rg))。顺便说一句:看起来Rg已经是一个数字了。所以as.numeric可能没有必要。 -
尝试搜索帮助以找到正确的两种语法编写方式。
?if_else或?case_when
标签: r if-statement tidyverse dplyr case-when