#' 交叉表功能处理
#'
#' @param Func_Name 函数名
#'
#' @return 返回函数对象
#' @export
#'
#' @examples
#' df_crossTable_fun()
df_crossTable_fun <- function(Func_Name='计数') {
if( Func_Name =='计数'){
res = length
}else if (Func_Name== '求和'){
res = sum
}else if (Func_Name =='平均数'){
res = mean
}else if (Func_Name == '最大值'){
res = max
}else if(Func_Name == '最小值'){
res = min
} else if (Func_Name == '方差'){
res = var
} else if (Func_Name == '标准差'){
res = sd
}else{
res = length
}
return(res)
}
#' 返回交叉表运算内容
#'
#' @param data 数据
#' @param row_holder 行标签
#' @param column_holder 列标签
#' @param value_hoder 唯一值
#' @param fun_name 函数
#' @param margins 分类汇总
#'
#' @return 返回数据框
#' @export
#'
#' @examples
#' df_crossTable_run()
df_crossTable_run <- function(data = mtcars,
row_holder=c('mpg'),
column_holder = c('cyl'),
value_hoder = 'disp',
fun_name = '求和',
margins = TRUE
) {
if(length(row_holder)){
#行标准不允许为空
formula_row = paste0(row_holder,collapse = '+')
if(column_holder == ''){
formula_col = '.'
}else{
formula_col = paste0(column_holder,collapse = '+')
}
formula_all = paste0(formula_row,'~',formula_col)
res = reshape2::dcast(data = data,formula = formula_all,value.var = value_hoder,
fun.aggregate = df_crossTable_fun(fun_name),margins = margins)
}else{
#返回空
res <- data.frame()
}
return(res)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.