如何使用dplyr使用存储在变量中的公式来计算新列?

时间:2019-02-27 14:30:19

标签: r dplyr

我正在尝试使用dplyr将公式的解决方案添加到数据框。使用函数mutate(),我想创建一个称为cutoff的列。列截止处的行应包含a2中存储的公式的解。

这是我的代码:

library(dplyr)

a1 <- "AVG(C1) * .290"
a2 <- gsub("AVG[(]C1[)]","mean",a1)


newiris <- iris %>%
group_by(Species) %>%
summarize(n= n(),mean = mean(Petal.Width), 
cv=sd(Petal.Width)/mean(Petal.Width)*100) %>%
mutate(cutoff=a2)

这是我现在想要的:

enter image description here

这就是我想要的:

enter image description here

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

newiris <- iris %>%
  group_by(Species) %>%
  summarize(n = n(), mean = mean(Petal.Width), 
            cv = sd(Petal.Width)/mean(Petal.Width)*100) %>%
  mutate(cutoff = eval(parse(text = a2)))

答案 1 :(得分:0)

使用一些引人注目的报价,我们可以很容易地做到这一点:

library(tidyverse)

a1 <- "AVG(C1) * .290"
a2 <- gsub("AVG[(]C1[)]","mean",a1)
a3 <- paste("cutoff =", a2)


newiris <- iris %>%
  group_by(Species) %>%
  summarize(n = n(),
            mean = mean(Petal.Width), 
            cv= sd(Petal.Width) / mean(Petal.Width)*100) %>%
  mutate(!!rlang::parse_expr(a3))

reprex package(v0.2.1)于2019-02-27创建