如何在R中为研究基线特征表自动添加频率百分比?
在R中自动化生成带百分比的交叉表(基线特征表)
以下两种方法可以帮你自动生成包含「频数(百分比)」格式的基线特征交叉表:
方法1:基础R原生实现(无需额外包)
先构造示例数据,再对交叉表进行格式化处理:
# 构造示例数据(替换成你的真实数据) set.seed(123) drug <- sample(c("drug x", "drug y"), 20, replace = TRUE) diabetes <- sample(c("diabetes y", "diabetes n"), 20, replace = TRUE) # 生成原始频数表 raw_tab <- table(drug, diabetes) # 按行计算百分比并拼接成目标格式 formatted_tab <- apply(raw_tab, 1, function(row) { paste0(row, " (", round(row / sum(row) * 100, 1), "%)") }) # 转置恢复原表格结构 final_tab <- t(formatted_tab) print(final_tab)
运行后会输出类似:
diabetes y diabetes n drug x 1 (10%) 9 (90%) drug y 3 (30%) 7 (70%)
方法2:使用janitor包简化操作(更高效)
janitor包专门为科研制表设计,能一键生成符合要求的表格:
# 安装并加载包(首次使用需安装) install.packages("janitor") library(janitor) # 生成包含频数和行百分比的表格 tabyl(drug, diabetes) %>% adorn_percentages("row") %>% # 按行计算百分比 adorn_pct_formatting(digits = 1) %>% # 百分比保留1位小数 adorn_ns(position = "front") # 把频数放在百分比前面
这个方法输出的结果和你的理想格式完全匹配,且代码更简洁易读。
内容的提问来源于stack exchange,提问作者user21136953
相关产品推荐
相关产品推荐

