![文本数据挖掘:基于R语言](https://wfqqreader-1252317822.image.myqcloud.com/cover/707/39130707/b_39130707.jpg)
上QQ阅读APP看书,第一时间看更新
3.3 字符串的提取
对于特定字符串的提取,有两种方式:一种是根据字符串所在位置进行提取,可以用str_sub函数实现;另一种是根据字符串的内容进行提取,可以使用str_extract函数实现。下面进行分别介绍。
1.根据字符串位置信息进行提取
如果我们现在要提取“上海自来水来自海上,山西煤运车煤运西山”中第1到5个字符,那么可以使用str_sub函数实现。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/64_05.jpg?sign=1739302339-JZDwnEeVSamoFmKfdzcV7ACH9zRzQ30k-0-2455b7244560eebafba0f6ea13bf19f4)
这样就把“上海自来水”提取了出来。其实,函数中的1和5分别传递给了start和end两个参数,一个表示起始位置,一个表示终点位置。起始位置和终点位置可以有负值,代表终结点在倒数第几个字符,例如我们要提取倒数4个字符。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/65_01.jpg?sign=1739302339-72Rns91dFkIMLBRMsfK0HNx5jtAFJn0a-0-8a75b5dedc9f45da4e4ad6bb803ecb2d)
这样我们就将起始位置放在了倒数第四,终点位置放在了倒数第一,把最后的4个字符提取了出来。
2.根据字符串内容进行提取
除了按照位置信息进行提取之外,还能够直接按照内容特征进行提取。例如把“山西”提取出来,可以用str_extract函数实现。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/65_02.jpg?sign=1739302339-7ymuyb5bF6Go37Mfb0jaaWGxjqD5HIjK-0-2952ebcd2cb34d3dc9a02dffaa1f80a5)
如果提取值不在,则会返回缺失值NA。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/65_03.jpg?sign=1739302339-JJQGzgyBoX08Gxe8JcFQ5VMM50fwwCbA-0-727d83db9b1f009836d6f59d69249ccf)
这种提取方式仿佛是在识别字符串中是否包含相关子串,在学习了正则表达式之后,就能够根据字符特征来进行提取,这样将会给这个函数赋予特殊的意义,从而有效发挥它的功能。正则表达式的使用将会在下一章节中介绍。