使用 r 中的公式将 mutate 与条件语句结合起来
Combine mutate with conditional statement using a formula in r
我正在尝试根据包含公式的条件来改变我的数据框。我正在考虑将 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")
.
有没有人知道如何做到这一点?非常感谢!
这是一种可能的解决方案:
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
我正在尝试根据包含公式的条件来改变我的数据框。我正在考虑将 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")
.
有没有人知道如何做到这一点?非常感谢!
这是一种可能的解决方案:
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