You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用docxtractr按Word文档表格数量子集化数据框?

按Word文档表格数量分类提取表格

你已经能通过lapply(file_path, function(x) docx_tbl_count(read_docx(x)))统计每个文档的表格数,接下来可以按以下步骤实现按表格数子集化:

步骤1:整理文件路径与表格数的对应关系

先把每个文件的路径和对应的表格数整理成数据框,方便后续分组操作:

# 生成包含文件路径和对应表格数的数据框
tbl_counts <- data.frame(
  file_path = file_path,
  table_count = sapply(file_path, function(x) docx_tbl_count(read_docx(x)))
)

步骤2:按表格数分组提取并合并表格

利用dplyr的分组功能,对不同表格数的文档分别提取表格,生成对应的数据框:

library(dplyr)
library(docxtractr)

# 按表格数分组
file_groups <- tbl_counts %>% group_split(table_count)

# 遍历每个分组,提取表格并生成df4、df5...
for (group in file_groups) {
  # 获取当前分组的表格数
  current_count <- unique(group$table_count)
  # 提取该组所有文档的表格
  all_tables <- lapply(group$file_path, function(path) {
    doc <- read_docx(path)
    # simplify=TRUE会把表格转为数据框,若需保留原格式可设为FALSE
    docx_extract_all_tbls(doc, simplify = TRUE)
  })
  # 合并同组内的所有表格(假设同组文档的表格结构一致,按行合并)
  combined_df <- do.call(rbind, unlist(all_tables, recursive = FALSE))
  # 赋值给对应的df变量,比如表格数为4则生成df4
  assign(paste0("df", current_count), combined_df)
}

注意事项

  • 如果同组内不同文档的表格结构不一致,直接rbind会报错,此时可以选择保留列表形式,或者先统一表格结构再合并。
  • 若不需要合并表格,只想保留每个文档的表格列表,可去掉do.call(rbind, ...)这一步,直接把all_tables赋值给对应变量。

内容的提问来源于stack exchange,提问作者Jhin Tonic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:32:07