如何按ciclo、etnibee两个分类变量汇总多个连续变量生成统计表格
双分类变量分组汇总统计表格实现方案
下面提供两种主流工具的可直接复用实现方案:
R 实现
- 依赖包:
dplyr用于分组汇总,gt用于生成规范统计表格 - 示例代码:
# 加载依赖 library(dplyr) library(gt) # 替换为你的实际数据集 your_data <- read.csv("你的数据路径.csv") # 分组计算统计量,支持批量处理所有连续变量 stat_result <- your_data %>% # 指定两个分组变量 group_by(ciclo, etnibee) %>% summarise( # 对所有数值型连续变量计算均值、标准差、样本量,可自行增减统计指标 across(where(is.numeric), list( 均值 = ~mean(.x, na.rm = TRUE), 标准差 = ~sd(.x, na.rm = TRUE), 样本量 = ~n() )), .groups = "drop" ) # 生成你需要的交叉布局统计表格 stat_result %>% gt(rowname_col = "ciclo") %>% # 自动按统计指标/分类变量合并表头 tab_spanner_delim(delim = "_", columns = everything())
Python 实现
- 依赖库:
pandas用于数据汇总与透视 - 示例代码:
import pandas as pd # 替换为你的实际数据集 your_data = pd.read_csv("你的数据路径.csv") # 分组计算统计量 stat_df = your_data.groupby(["ciclo", "etnibee"]).agg( # 批量给所有数值型连续变量计算均值、标准差 **{f"{col}_均值": (col, "mean") for col in your_data.select_dtypes("number").columns}, **{f"{col}_标准差": (col, "std") for col in your_data.select_dtypes("number").columns}, 样本量 = ("ciclo", "count") ).reset_index() # 转换为双分类交叉布局,和你期望的输出格式一致 pivot_result = stat_df.pivot( index = "ciclo", columns = "etnibee", values = [c for c in stat_df.columns if c not in ["ciclo", "etnibee"]] ) # 可直接导出为Excel查看 pivot_result.to_excel("分组汇总结果.xlsx")
如果需要调整统计指标,仅需要修改
summarise/agg内的计算规则即可,支持自定义中位数、分位数、极值等各类统计量。
内容的提问来源于stack exchange,提问作者Victor Eduardo
相关产品推荐
相关产品推荐

