以下是一个示例函数,可以通过add_stat运行,并在汇总表中显示结果。
#在这里定义pairwise函数,传入一个dataframe和一个分类变量的字符向量
pairwise_diff <- function(data, factor_cols) {
#创建空白矩阵来保存差异结果
n_vars <- length(factor_cols)
output <- matrix(NA, nrow = n_vars, ncol = n_vars, dimnames = list(factor_cols, factor_cols))
#双层嵌套循环,一个变量与另一个变量的差异进行比较
for (i in 1:n_vars) {
for (j in 1:n_vars) {
# 只涉及未比较过的变量
if (is.na(output[i, j])) {
diff_col <- data[, factor_cols[i]] != data[, factor_cols[j]]
num_diff <- sum(diff_col)
output[i, j] <- num_diff
output[j, i] <- num_diff
}
}
}
# 返回格式化的输出
output_dimnames <- paste0(c("数目不同的 ", factor_cols), " 对之间的差异 (n)")
return(list(statistic = output, output_dimnames = as.character(output_dimnames)))
}
# 用mtcars数据集示例
library(gt)
data(mtcars)
#在汇总表中注入自定义函数
gt_summary(mtcars) %>% add_stat(tab_style = TRUE,
stat_fun = pairwise_diff,
columns = c("gear", "carb"))