r - 为许多格式相似的文件抓取 .txt 文件
问题描述
我使用 R 将一些 .pdf 文件转换为 .txt 文件,但无法找到一种方法来抓取它们以最终构建数据框。我是文本抓取的新手,所以请原谅我的无知。
这是 .txt 文件的格式,我主要对数字和标题感兴趣。任何建议都非常感谢。
Township of Buena Vista
General Election Results - November 2, 2010
Prepared by the Office of Edward P. McGettigan, Atlantic County Clerk
Township Committee Public Count
Mary Ann
Peter C. Richard Henry L. Total Total Total Total Total
Micheletti-
Bylone, Sr. Harlan Coia, Jr. Machine Vote By Provisional Emergency Public
Levari
Ward Democratic Democratic Republican Count Mail Count Count Count
Republican
District
D-1 205 195 230 223 436 113 16 565
D-2 202 160 275 261 459 459
D-3 331 346 99 87 457 457
D-4 215 205 164 152 377 377
D-5 104 95 169 166 271 271
D-6 77 70 109 108 188 188
我希望输出是表格形式的东西,比如
Mary Ann
Peter C. Richard Henry L. Total Total Total Total Total
Micheletti-
Bylone, Sr. Harlan Coia, Jr. Machine Vote By Provisional Emergency Public
Levari
Democratic Democratic Republican Count Mail Count Count Count
Republican
District
D-1 205 195 230 223 436 113 16 565
D-2 202 160 275 261 459 459
D-3 331 346 99 87 457 457
D-4 215 205 164 152 377 377
D-5 104 95 169 166 271 271
D-6 77 70 109 108 188 188
除了姓名和党派为一个字符串。目标是将其与其他类似文件合并以创建数据集。
解决方案
也许你可以概括这种方法,但我不认为,它在与示例数据以外的其他数据一起使用时非常稳定。
我将您的示例放入一个名为example.txt
.
library(tidyverse)
input <- read_lines("example.txt")
input[as.logical(cumsum(input == "District"))] %>%
tibble() %>%
slice(-1) %>%
mutate(count = str_replace_all(string = ., "\\s{9,12}", ";")) %>%
select(-.) %>%
separate(col = count, into = c("District", as.character(1:9)), sep = ";") %>%
mutate(across(everything(), str_trim),
across(as.character(1:9), as.integer))
返回
# A tibble: 6 x 10
District `1` `2` `3` `4` `5` `6` `7` `8` `9`
<chr> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 D-1 205 195 230 223 436 113 16 NA 565
2 D-2 202 160 275 261 459 NA NA NA 459
3 D-3 331 346 99 87 457 NA NA NA 457
4 D-4 215 205 164 152 377 NA NA NA 377
5 D-5 104 95 169 166 271 NA NA NA 271
6 D-6 77 70 109 108 188 NA NA NA 188
创建列名(候选名称)是一项棘手的任务。根据计数,可能需要调整替换为“;”的空格:\\s{9,12}
表示替换至少 9 到 12 个空格字符。
推荐阅读
- python - 如何制作跟踪表以查找(打印)三个给定整数的最小值?
- ajax - 通过 RxJS ajax 注册存在用户时 React Native 崩溃
- javascript - 如何更改反应导航标题的高度
- dart - 标签栏视图错误,因为多次使用相同的 GlobalKey
- r - 在 RStudio 片段中转义 $ 美元符号字符
- python - Torch 在 PyTorch 上分配零 GPU 内存
- ruby-on-rails - 错误:过滤器链因 :correct_user 呈现或重定向而停止
- javascript - 如何在 for 循环中为多个图像创建模态图像?
- amazon-dynamodb-index - 为什么 dynamodb 中的索引被称为“二级索引”?为什么要添加“次要”?
- git - 如何在 GitKraken 中“丢弃线路”?