r - dplyr 使用动态变量名称进行变异,同时尊重 group_by

标签 r dplyr

我正在按照

dplyr mutate using variable columns
&
dplyr - mutate: use dynamic variable names

在 mutate 中使用动态名称。我想要做的是按受最小标准偏差影响的组对列数据进行标准化。每列都有不同的最小标准偏差

例如(为方便起见,我省略了循环和映射语句)

require(dplyr)
require(magrittr)
data(iris)
iris <- tbl_df(iris)

minsd <- c('Sepal.Length' = 0.8)
varname <- 'Sepal.Length'

iris %>% group_by(Species) %>% mutate(!!varname := mean(pluck(iris,varname),na.rm=T)/max(sd(pluck(iris,varname)),minsd[varname]))

我让动态分配和变量选择按照引用答案的建议工作。但是 group_by() 不受尊重,至少对我来说,这是在这里使用 dplyr 的主要好处

所需的答案由
iris %>% group_by(Species) %>% mutate(!!varname := mean(Sepal.Length,na.rm=T)/max(sd(Sepal.Length),minsd[varname]))

有没有解决的办法?

最佳答案

我其实不太了解pluck ,所以我不知道出了什么问题,但我会这样做,这有效:

iris %>% group_by(Species) %>% 
  mutate(
    !! varname :=
      mean(!!as.name(varname), na.rm = T) / 
      max(sd(!!as.name(varname)),
          minsd[varname])
 )

如果这不是您要找的,请告诉我。

关于r - dplyr 使用动态变量名称进行变异,同时尊重 group_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913192/

相关文章:

r - 根据R中的条件复制行

r - 将列引用写入 group_by 的函数

r - 显示百分比值的李克特图

r - 使用ggplot2为树状图中的群集着色

r - ggplot2 中带有边缘直方图的散点图

r - 在数据框中创建一个新变量,其中包含所有其他组的值的总和

r - 将原始向量存储为数据框中的单个值

r - R中字符串的类字典匹配

r - R 中缺失日期/值的“插值”?

r - 在 dplyr mutate(across) 调用内创建因子失败