如何导出R语言table1()函数的输出且不丢失任何变量
问题原因
table1() 函数默认返回HTML格式的表格对象,直接用write.xlsx()导出时仅会提取内层表格内容,嵌套的分层分组表头(即group1变量的分组信息)会被丢弃,因此导出文件和预览效果不一致。
解决方案1:保留原表格格式(含合并表头)导出
借助flextable包中转,可1:1保留table1的分层表头、样式到Excel中:
- 先安装依赖包(未安装的情况下):
install.packages(c("flextable", "openxlsx"))
- 调整导出代码:
library(table1) library(flextable) library(openxlsx) data <- data.frame( group1 = c("AA","BB","AA","AA","AA","BB","BB"), group2 = c("A","A","C","A","B","B","C"), x = c(0,1,1,0,1,0,1) ) # 生成table1对象 t <- table1(~ factor(x)| group1+group2, data=data, topclass="Rtable1-zebra") # 转换为flextable对象,自动保留所有分层表头和格式 t_flex <- t1flex(t) # 导出为Excel save_as_xlsx(t_flex, path = "file_path/file.xlsx")
导出的Excel会自动合并group1对应的表头单元格,和R中预览的table1效果完全一致。
解决方案2:导出为平铺格式的表格(无合并单元格)
如果不需要合并表头,希望所有分组信息都以单独列的形式呈现方便后续数据处理,可以直接指定table1的输出格式为数据框:
library(table1) library(openxlsx) data <- data.frame( group1 = c("AA","BB","AA","AA","AA","BB","BB"), group2 = c("A","A","C","A","B","B","C"), x = c(0,1,1,0,1,0,1) ) # 直接输出为数据框,所有分组信息都完整保留 t_df <- table1(~ factor(x)| group1+group2, data=data, output = "data.frame") # 导出Excel write.xlsx(t_df, file = "file_path/file.xlsx", row.names = FALSE)
内容的提问来源于stack exchange,提问作者Ruser-lab9
相关产品推荐
相关产品推荐

