終於來到數據處理的最後一部分——特殊文本的處理,這章節主要介紹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語言的數據處理三個部分已經整理完畢了,接下來我是想聊一下數據可視化的問題,話說也是我最感興趣的部分了,有點小期待。


推薦閱讀:
相關文章