如何将结构化大文本文件转换为含ID、DATE、TEXT的DataFrame?
最简处理方案
可以用tidyverse工具链快速实现需求,核心思路是按分隔线分组,再从每组提取对应信息:
步骤1:加载依赖包
library(tidyverse)
步骤2:数据处理代码
# 整理原始数据并提取目标字段 result <- AA %>% # 重命名原始列,简化后续操作 rename(content = `-------------------------------------------------`) %>% pull(content) %>% # 按分隔线分割为独立区块 split(cumsum(str_detect(., "^-{51}$"))) %>% # 移除仅含分隔线的空区块 discard(~length(.) == 1) %>% # 遍历每个区块提取信息 map_df(function(block) { # 提取ID:匹配10位数字 id <- str_extract(block[1], "\\d{10}") # 提取并转换日期:匹配DD-MM-YYYY格式 date <- str_extract(block[1], "\\d{2}-\\d{2}-\\d{4}") %>% as.Date(format = "%d-%m-%Y") # 提取文本:合并区块内除元数据和分隔线外的内容 text <- block[-c(1, length(block))] %>% str_c(collapse = "\n") tibble(ID = id, DATE = date, TEXT = text) })
代码说明
- 用
str_detect识别分隔线(51个连续减号),通过cumsum实现区块分组 - 正则表达式
\\d{10}精准匹配10位ID,\\d{2}-\\d{2}-\\d{4}匹配日期格式 - 文本内容保留原始换行结构,通过
str_c(collapse = "\n")合并多行内容
运行后得到的result就是包含ID、DATE、TEXT三个变量的DataFrame。
内容的提问来源于stack exchange,提问作者hklovs
相关产品推荐
相关产品推荐

