如何在table1()中添加自定义行/表头及空白行?
用table1包实现自定义标题行、统计行及空白行的方案
1. 添加加粗“共病”标题行与对应变量统计
table1支持通过add参数自定义表格行,结合HTML标签实现无变量关联的加粗标题,同时添加指定变量的TRUE计数行。
假设你的数据框为df,包含逻辑型变量mental_health和substance_use,示例代码如下:
library(table1) # 定义函数:计算TRUE的数量及占比 count_true <- function(x) { n_true <- sum(x, na.rm = TRUE) prop <- sprintf("(%.1f%%)", 100 * n_true / length(na.omit(x))) paste0(n_true, " ", prop) } # 生成包含自定义内容的表格 table1(~ 1, data = df, add = list( # 加粗的“共病”标题行(跨列显示) "<th colspan='2' style='font-weight: bold;'>共病</th>" = "", # 心理健康变量的TRUE统计 "心理健康" = count_true(df$mental_health), # 物质使用变量的TRUE统计 "物质使用" = count_true(df$substance_use) ), # 隐藏默认的空行(因为我们用add自定义全部内容) render.continuous = function(x) NULL, render.categorical = function(x) NULL )
如果需要和原有变量表格合并,只需把~ 1替换成你原本的变量公式(比如~ age + gender),add参数里的内容会追加到原有表格之后。
2. 添加空白行
插入空白行同样通过add参数实现,有两种方式:
方式1:用空字符串生成简单空白行
table1(~ age + gender, data = df, add = list( # 在共病标题前插入空白行 "" = "", "<th colspan='2' style='font-weight: bold;'>共病</th>" = "", "心理健康" = count_true(df$mental_health), # 在物质使用行后插入空白行 "" = "", "物质使用" = count_true(df$substance_use) ) )
方式2:用HTML标签精准控制跨列空白行
如果需要空白行跨所有列,用HTML的空行标签更可靠:
add = list( "<tr><td colspan='2'></td></tr>" = "", "<th colspan='2' style='font-weight: bold;'>共病</th>" = "", "心理健康" = count_true(df$mental_health), "<tr><td colspan='2'></td></tr>" = "", "物质使用" = count_true(df$substance_use) )
核心要点
- table1支持解析HTML标签,用
style='font-weight: bold;'可轻松实现文本加粗; add参数的列表中,键为行显示内容(支持HTML),值为对应列的统计结果;- 空白行可灵活插入在表格的任意位置,按需选择简单空字符串或HTML标签实现。
内容的提问来源于stack exchange,提问作者amburguesa
相关产品推荐
相关产品推荐

