![文本数据挖掘:基于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=1739489623-eQNIX2o3CRSD7AJLoTRkceJyAcM3ByWu-0-b1ac291c28d4e7b6786318ce935559e0)
这样就把“上海自来水”提取了出来。其实,函数中的1和5分别传递给了start和end两个参数,一个表示起始位置,一个表示终点位置。起始位置和终点位置可以有负值,代表终结点在倒数第几个字符,例如我们要提取倒数4个字符。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/65_01.jpg?sign=1739489623-HohnlegCDXsqctP1oH1mumjEuQ3nHjaC-0-08276b6c23ce92a4d11b8fc3c7bb6905)
这样我们就将起始位置放在了倒数第四,终点位置放在了倒数第一,把最后的4个字符提取了出来。
2.根据字符串内容进行提取
除了按照位置信息进行提取之外,还能够直接按照内容特征进行提取。例如把“山西”提取出来,可以用str_extract函数实现。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/65_02.jpg?sign=1739489623-nMex92HgIPlX8MlONbbRqDoiDBoE97Au-0-4efbc258fc5ca7b5341fcf5c7ee7426c)
如果提取值不在,则会返回缺失值NA。
![](https://epubservercos.yuewen.com/CB81A2/20516007901591506/epubprivate/OEBPS/Images/65_03.jpg?sign=1739489623-aYZJmTGjcHN8bMzyjAewkbARJEX26ExX-0-36e25ec95ca830acd396b9050276759f)
这种提取方式仿佛是在识别字符串中是否包含相关子串,在学习了正则表达式之后,就能够根据字符特征来进行提取,这样将会给这个函数赋予特殊的意义,从而有效发挥它的功能。正则表达式的使用将会在下一章节中介绍。