如何用R语言动态设置汇总表列名?附实现代码
动态设置汇总表的25分位列名(R语言实现)
需求:实现汇总表列名的动态标记,让25分位数(q25)的列名可调用预定义名称,按需调整显示形式。
完整实现代码
df <- data.frame(Name = c("asdf","kjhgf","cvbnm","rtyui","cvbnm","jhfd","cvbnm","sdfghj","cvbnm","dfghj","cvbnm"), sale=c(27,28,27,16,14,25,14,14,19,18,28), city=c("CA","TX","MN","NY","TX","MT","HU","KL","TX","SA","TX"), Dept = c("HH","MM","NN","MM","AA","VV","MM","HU","JJ","MM","ZZ")) # 预定义25分位数的显示名称(也可通过options全局设置) percentile25 <- "25th Percentilen" options(percentile25 = percentile25) t1 <- function(dataset, var, name, p25 = getOption("percentile25", default = "25th percentile")){ # 解析传入的变量名,支持非标准求值 var <- rlang::parse_expr(var) # 计算25分位数和有效样本量 tabl1 <- dataset %>% filter(!is.na(!!var)) %>% summarise( q25 = quantile(!!var, type=6, probs = seq(0, 1, 0.25), na.rm=TRUE)[2], N = sum(!is.na(!!var)) ) # 整理汇总表结构,动态替换列名 summ_tab <- tabl1 %>% mutate(" " = !!name) %>% dplyr::rename(!!p25 := q25) %>% # 动态重命名25分位列 select(" ", everything(), N) summ_tab } # 默认调用示例 t1(dataset = df, var = "sale", name = "listd") # 自定义列名调用示例 # t1(dataset = df, var = "sale", name = "listd", p25 = "25%分位数")
关键实现说明
- 动态列名配置:通过
getOption读取全局预定义的列名,也可在函数调用时直接传入自定义名称,灵活调整显示形式 - 非标准求值兼容:使用
rlang包的工具解析传入的变量名,支持对任意数值列进行汇总计算 - 表结构整理:通过
mutate添加分组名称列,rename动态替换分位列名,最后调整列顺序让输出更符合汇总表格式
内容的提问来源于stack exchange,提问作者samrr_tr
相关产品推荐
相关产品推荐

