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

Gathering the correct amount of digits for numbers when text mining

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

我用grep在每一篇文档中找到关键词后,就继续收集感兴趣的数字或字符。

我要收集的一个数据是总功率,如下所示:

TotalPower: 986559. (UoPow)

因为我已经正确选择了这个摘录,所以我创建了以下函数来获取位置 n 和 m 之间的字符,其中 n 和 m 从右到左开始计数。

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

需要说明的是,从“:”到986559,有2个space;从“.”到“(”,有一个space.

所以我写道:

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

其中 myDf 是包含所有相关观察值的字符向量。

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

该代码似乎适用于其余数据。这个数字(986559)确实是数据中最高的数字,也是唯一一个数量级为 10^5 的数字。

我怎样才能确保收集到每个号码中的所有数字?

感谢您的帮助。

我们可以使用正则表达式

提取.之前的数字
library(stringr)
str_extract(str1, "\d+(?=\.)")
#[1] "986559" 

\d+ 表示一个或多个 digist 后跟正则表达式 lookaound .