R语言之数据处理(三)

2020-06-17 00:00:00 函数 语言 字符 匹配 正则表达式

终于来到数据处理的后一部分——特殊文本的处理,这章节主要介绍R语言一些对文本的处理函数,此处我们需要了解一下stringr包中的相关函数。除了函数之后,也会说一下正则表达式的相关内容。如果能够熟练地使用stringr包和正则表达式,在文本挖掘任务和网络文本抓取上必定是有很大的方便。

一、正则表达式

正则表达式其实如果有一些编程基础的小伙伴都应该会接触过,就和数据库或者excel的通配符用处一样,正则表达式通过用特定的字符去代表一类字符,从而在文本处理的时候能够识别出整类字符并加以操作,下面就介绍一下R语言中正则表达式一些基础。

·在R中,句号“.”是为广义化的正则式,它可是匹配任意字符。而中括号“[]”,括号中所包含的字符都会被匹配到,比如[A-Z]表示A-Z共26个大写字母任意一个。

·上箭头"^"与"[]"结合,如[^[A-D]],表示匹配A-D四个字符以外的字符。

·为了提高编写代码的效率,可以加入字符量化符,比如cccc可以用c{4}代替,具体的量化符下面会有总结表,就不再叙述。

·如果先按照固定的字符模式匹配时,可以使用小括号“()”,将字符模式用()括住。

·在正则表达式中,将有特殊含义的字符称为元字符,比如有上面".","[]","()","^"等等。为了准确匹配它们,需要在其前加上两个斜杠"\\"。在R中"\\"会被解释为单个字符,在正则表达式中单个斜杠"\"会被解释为引入一个转义序列。所以在使用特殊含义字符中(下面会有总结表)时,就需要注意转义的问题了。

1.预定义的字符集

R语言正则表达式预定义的字符集

2.量化符

R语言正则表达式的量化符

3.特殊含义的字符

R语言正则表达式特殊含义的符号

正则表达式的内容是虽然多,但重要的是学会使用。下面会介绍R中stringr包的函数,结合正则表达式,就能体会其方便,从而理解两者结合的意义。

二、stringr包的函数

stringr包的函数主要分为"使用正则表达式的函数"和"其他函数",下面是各函数的说明:

stringr函数说明

下面通过一些例子说明str类函数和正则表达式的结合:

·提取字符向量中所包含的完整邮箱

([:alnum:]+@[:alnum:]+\\.com)'正确识别出邮箱,排除其他干扰项

·分离编号和姓名

识别不同类型的值,并加以处理

·识别邮箱种类

去掉与正则表达式不符的部分,得到目标

日常还有很多这样的文本处理任务,使用正则表达式就可以提高处理效率,特别在做网络爬虫的时候。后,可以跟大家分享一下我之前的工作任务——根据订单的产品销售情况,计算出业务员的产品提成。图一是部分订单明细的截图(每一条记录表示一位业务员出售的产品),图二是对应产品的奖励(每售出一种产品,奖励对应金额)。

图一
图2

如果有兴趣向动手操作的小伙伴,可以找我拿一下数据。到此,R语言的数据处理三个部分已经整理完毕了,接下来我是想聊一下数据可视化的问题,话说也是我感兴趣的部分了,有点小期待。

相关文章