如何用R创建带图例符号的分类数据定性表格?
在R中创建带符号图例的分类数据表格(仿ICILS 2018样式)
步骤1:准备数据
先把你提供的数据集转换成R可识别的数据框:
# 构造数据框 df <- data.frame( Country = c("BE-fr", "BE-nl", "CY", "EL", "ES", "FI", "FR", "HR", "HU", "IE", "PT", "RS", "SI", "SK"), School.level = c("Yes", "Yes", "Yes", "No", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes"), Local.authority.level = c("Yes", "Yes", "Yes", "No", "No", "Yes", "Yes", "Yes", "No", "No", "Yes", "No", "No", "No"), Country.level = c("No", "No", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "Yes", "Yes", "Yes") )
步骤2:用gt包实现目标表格
gt包适合自定义复杂表格样式,能轻松实现符号替换+图例添加的需求:
# 加载依赖包 library(gt) # 制作带符号和图例的表格 df %>% gt() %>% # 将"Yes"替换为✓,"No"留空(可根据需求换成×等符号) fmt( columns = c(School.level, Local.authority.level, Country.level), fns = function(x) ifelse(x == "Yes", "✓", "") ) %>% # 设置表头 tab_header(title = "各层级政策覆盖情况") %>% # 添加底部图例 tab_source_note(source_note = md("**图例**:✓ 表示该层级存在对应政策")) %>% # 调整列对齐方式 cols_align( align = "center", columns = c(School.level, Local.authority.level, Country.level) ) %>% # 美化表格样式(可选) tab_options( table.width = pct(80), heading.title.font.size = 16, table.border.top.style = "solid", table.border.bottom.style = "solid" )
步骤3:备选方案(flextable包)
如果偏好flextable,也能实现相同效果:
library(flextable) library(magrittr) df %>% # 批量替换符号 mutate(across(c(School.level, Local.authority.level, Country.level), ~ifelse(. == "Yes", "✓", ""))) %>% flextable() %>% # 添加图例到页脚 add_footer_lines("✓ 表示该层级存在对应政策") %>% # 设置对齐方式 align(align = "center", part = "body") %>% align(align = "left", part = "body", j = "Country") %>% # 调整表格宽度并套用预设样式 set_table_properties(width = .8) %>% theme_booktabs()
效果说明
运行代码后会生成和ICILS报告风格一致的表格:国家列左对齐,各层级列居中显示符号,底部附带清晰图例。你可以自由替换符号(比如用●、■等),或调整表格配色、边框样式来匹配需求。
内容的提问来源于stack exchange,提问作者saykodelikat
相关产品推荐
相关产品推荐

