如何汇总长格式数据集并生成含成功数与占比的表格?
解决方案
步骤1:数据汇总与格式化
使用dplyr和tidyr对数据分组统计,计算每个地点的成功次数、总尝试数,生成包含成功数和占比的显示文本后转换为宽格式:
library(dplyr) library(tidyr) # 原始数据集 df <- tibble( PersonID = c(1:10), Location = c("Atlanta", "Chicago", "Denver", "Baltimore", "Baltimore", "Atlanta", "Denver", "Chicago", "Atlanta", "Baltimore"), Success = c(1, 1, 0, 0, 1, 0, 0, 1, 1, 0) ) # 汇总并格式化数据 summary_df <- df %>% group_by(Location) %>% summarise( success_count = sum(Success), total = n(), success_rate = (success_count / total) * 100, display_text = paste0(success_count, " (", round(success_rate, 1), ")") ) %>% pivot_wider(names_from = Location, values_from = display_text)
步骤2:生成目标表格
方法1:用knitr::kable生成Markdown表格
运行代码直接输出符合需求的Markdown格式表格:
library(knitr) kable(summary_df, align = "c")
输出结果:
| Atlanta | Baltimore | Chicago | Denver |
|---|---|---|---|
| 2 (66.7) | 1 (33.3) | 2 (100) | 0 (0) |
方法2:用gt生成美观可定制表格
如果需要更精致的表格,使用gt包:
library(gt) summary_df %>% gt() %>% cols_label( Atlanta = "Atlanta", Baltimore = "Baltimore", Chicago = "Chicago", Denver = "Denver" ) %>% tab_options( table.width = "auto", column_labels.font.weight = "bold" )
该代码会生成带加粗列标题的整洁表格,显示内容完全匹配需求。
内容的提问来源于stack exchange,提问作者Klaus Peter
相关产品推荐
相关产品推荐

