我正在尝试从pdftools
包生成的字符向量中提取表格数据。输出(修剪时)如下所示:
pdftext <- c(" Clostridium perfringens no./100ml 0 0 0 0 1409 0 0\n Colony count 22°C cfu/ml - 0 15.673 >300.000 52 0 0\n Colony count 37°C cfu/ml - 0 3.942 41 52 0 0")
lines <- strsplit(pdftext,"\n")
lines
[[1]]
[1] " Clostridium perfringens no./100ml 0 0 0 0 1409 0 0"
[2] " Colony count 22°C cfu/ml - 0 15.673 >300.000 52 0 0"
[3] " Colony count 37°C cfu/ml - 0 3.942 41 52 0 0"
我一直在拆分并使用以下方法将它们加入到字符矩阵中:
do.call(rbind,lapply(lines, function(x) {strsplit(x," [ ]+")})[[1]])
此操作失败,因为包含15.673 >300.000
的列之间只有一个空格。
这里可能有多个问题:
15.673 >300.000
而不是Colony count 22°C
?谢谢。
答案 0 :(得分:1)
我发了3个问题。这是RegExp问题(2)的答案。
@rawr有助于更好的PCRE表达,但在我完成500份报告时,我发现了更多问题。我无法找到能够应对所有变化的规则,因此更好的RegExp无法解决问题。列边界也有所不同,因此固定宽度不会解决问题,除非我检测到每页的列。
我通过解析输出两次解决了这个问题。在第一遍中,我按{2,}
分割(即&gt; = 2个空格)并获取前两列文本。在第二遍中,我将{1,}
(即&gt; = 1个空格)拆分并取最后7列数字。两个通道都被强制转换为字符向量的数据帧,然后cbind
组合它们。