我对R相当陌生。我编写了以下函数,该函数试图基于特征变量(作为“变量”传递给函数)和目标变量(作为{{1传递给函数}}。我还传递了一个值(Can't resolve all parameters for Service in /path/to/file: (?, [object Object]). This will become an error in Angular v6.x
)进行过滤。
以下功能属于过滤器行(target_var
)。我认为这与target_val
,filter(target_var == target_val)
等有关,但无法解决。以下代码应已准备就绪,可以运行-如果您排除过滤器行,那么它应该可以工作;如果您包括过滤器行,它将会掉下来。
quo
答案 0 :(得分:1)
所以我假设您要按目标好坏来进行过滤。
据我了解,请始终filter()
之前group_by()
,因为您可能会省略过滤器变量。我对您的功能进行了一些重组:
dset <- data.frame(target, var_1)
odds_by_var <- function(dataframe, variable, target_var, target_val){
df_name <- paste('odds', deparse(substitute(variable)), sep = "_")
variable_string <- deparse(substitute(variable))
target_string <- deparse(substitute(target_var))
temp_df1 <- dataframe %>%
group_by_(variable_string, target_string) %>%
summarise(cnt = n()) %>%
mutate(total = sum(cnt),
rate = cnt / total)
names(temp_df1) <- c(variable_string,"target","cnt","total","rate" )
temp_df1 <- temp_df1[temp_df1$target == target_val,]
assign( df_name,temp_df1, envir=.GlobalEnv)
}
odds_by_var(dset, var_1, target, "bad")
结果:
> odds_var_1
# A tibble: 2 x 5
# Groups: var_1 [2]
var_1 target cnt total rate
<chr> <chr> <int> <int> <dbl>
1 debit_order bad 1 4 0.25
2 other bad 1 2 0.5