文本挖掘时为数字收集正确的数字位数

时间:2017-10-06 17:46:03

标签: r function grepl

我需要在遵循相同标准布局的一组文档中搜索特定信息。

在我使用grep查找每个文档中的关键字后,我继续收集感兴趣的数字或字符。

我必须收集的一项数据是 Total Power ,如下所示:

  

TotalPower:986559。(UoPow)

由于我已经正确选择了这段摘录,我创建了以下函数,该函数采用位置n和m之间的字符,其中n和m从右向左开始向上计数。

substrRight <- function(x, n,m){
 substr(x, nchar(x)-n+1, nchar(x)-m)
}

重要的是,从“”到数字986559,有2个空格;从“”到“(”,有一个空格。

所以我写道:

TotalP = substrRight(myDf[i],17,9)        [1]

其中myDf是一个包含所有相关观察结果的字符向量。

第一行[1],在我遍历所有观察结果后,给出了我想要的数字,但我注意到当数字是986559时,结果是98655.它根本就没有“看到”9作为最后一个数。

代码似乎对其余数据工作正常。这个数字(986559)确实是数据中的最高数字,并且是唯一一个数量级为10 ^ 5的数字。

如何确保收集每个号码的所有数字?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我们可以使用正则表达式外观

int之前提取数字
.

library(stringr) str_extract(str1, "\\d+(?=\\.)") #[1] "986559" 表示一个或多个挖掘者,然后是正则表达式的样式\\d+