Ana*_*Ana 0 r function dplyr rlang
我编写了一个函数,可以进行一些分析,包括使用NPS包计算一个名为"Net Promoter Score"的度量.
library(dplyr)
library(tidyr)
library(NPS)
df<-data.frame(score = sample(c(0:10),15,replace=TRUE),
variable = sample(c('A', 'B', 'C'),15,replace=TRUE)
)
analyzer <- function(df,var, sco){
df %>% group_by_(var) %>% transmute(n= nps(sco)) %>% unique()
}
analyzer(df,'variable','score')
Run Code Online (Sandbox Code Playgroud)
这将返回NA所有级别的变量.
现在dplyr函数有一种处理x作为字符传递给它们的方法(即,_我在这里使用它们的版本),但nps函数没有.我也试过通过得分列,nps(.[[score]])但这会返回整列的NPS,并且不会按group_by级别将其分解.
小智 6
您可以使用rlang包,然后使用uquote变量!!
library(dplyr)
library(tidyr)
library(NPS)
library(rlang)
df<-data.frame(score = sample(c(0:10),15,replace=TRUE),
variable = sample(c('A', 'B', 'C'),15,replace=TRUE)
)
analyzer <- function(df,var, sco){
var <- rlang::enquo(var)
sco <- rlang::enquo(sco)
df %>% group_by(!!var) %>% transmute(n= nps(!!sco)) %>% unique()
}
analyzer(df, variable,score)
Run Code Online (Sandbox Code Playgroud)