我对 R 很陌生——但现在花了几天时间拼凑(感谢堆栈交换社区)我需要的代码,以完成我想要做的事情:从头到尾,我使用的是 Tabulizer 包将 pdf 表处理为 R。我正在努力解决数字的错误聚合(关闭 pdf)以及如何有效地将它们分成适当的列。
这是 Tabulizer 输出中相关列的子集:
'data.frame': 26 obs. of 3 variables:
$ X1: Factor w/ 29 levels "Region A","Region B",..: 22 2 3 4 5 6 7 8 9 10 ...
$ X2: Factor w/ 29 levels "1 192 36,7","102 4,6",..: 21 20 4 1 23 10 18 14 26 17 ...
$ X3: Factor w/ 29 levels "1 144 48,2","1 800 55, 8",..: 24 6 7 2 23 11 22 17 26 21 ...
更具体地说:“1 800 55, 8”是“1800”和“55.8”的错误聚合,并且在整个列中都会出现这种情况(应该是两个)。
我正在使用 gsub(在循环中)将小数逗号替换为小数点,并删除所述小数点周围不需要的空格。
for (i in 2:ncol(Tab)) { #some of the tables have multiple columns
Tab[[i]] <- gsub(",", "\\.", Tab[[i]])
Tab[[i]] <- gsub("\\. ", "\\.", Tab[[i]])
Tab[[i]] <- gsub(" \\. ", "\\.", Tab[[i]])
}
这让我得到“1 800 55.8”,这更好但不是很好;第一个空格可能存在也可能不存在,或者可能有两个,具体取决于数字的大小 - 空格是原始文档中千位分隔符的替代。
我想将该列转换为适当的两个新列。我尝试使用 stringi::word 来隔离“最后一个单词”,并尝试匹配|从原始列中提取该输出(55.8),留下“1 800”,然后可以对其进行修剪,但我没有知道怎么。也没有与该解决方案结婚 - 愿意学习其他方式。非常感激。