《深入浅出数据分析》第十三章
文章目錄
- 整理數據
- 一、Excel
- 二、正則表達式
- 三、去重
- 四、補充介紹正則表達式
整理數據
這章進行了簡單的數據清洗。
一、Excel
一開始拿到散亂的數據,先用Excel進行分列。
散亂的數據:
這里先處理 FirstName ,可以看到這一列的問題是,每個名字前面都多一個^字符,用Excel工具去掉即可。
先列出來幾個書中提到的函數:
| FIND | 返回指定字符串的位置 |
| LEFT | 取單元格左邊的字符 |
| RIGHT | 取單元格右邊的字符 |
| TRIM | 刪除單元格中的空格 |
| LEN | 求單元格中的長度 |
| CONCATENATE | 將兩個值合并 |
| VALUE | 求以文本格式存儲的數據的數值 |
| SUBSTITUTE | 以指定的新文本替代單元格中不需要的文本 |
這里用到的是SUBSTITUTE函數。
SUBSTITUTE(text, old_text, new_Text, [instance_num])我們先新建一個列,命名為NewFirstName。之后輸入公式。如下圖:
這樣FirstName就處理完了,但是LastName無法使用簡單的Excel函數去掉中間的多余字符,所以我們使用R。
這里注意,不是Excel無法處理這種問題,是因為如果想要使用Excel函數去處理,就要嵌套多個不同函數,這樣不便于使用及更改,所以還是使用R更方便快捷。
二、正則表達式
正則表達式是一種編程工具,可以用這個工具制定復雜的模式以便匹配和替換文本字符串。
本次數據中的LastName列就可以使用這個方式處理。
先用代碼演示一下書中示例:
hfhh <- read.table("D:/Excel/hfda/hfda_ch13_raw_data.csv", sep=",",header=1) // 先加載數據 NewLastName <- sub("\\(.*\\)", "", hfhh$LastName) //使用正則表達式處理LastName列 這里解釋一下這個正則表達式的含義: \\(.*\\) 總體來看就是要匹配()中的內容 分解開來看: \\( 代表左括號,\\表示括號本身并不是R的表達式 \\) 代表右括號,\\表示括號本身并不是R的表達式 .* 代表括號內的全部內容這樣LastName這一列就處理好了,但在數據中我們發現很多重復項,這些重復項的名字和電話是相同的,而時間等無關項不同。這就需要我們先將其無關項刪除,然后再進行去重操作。
先去除無關項:
hfhhNameOnly$Time <- NULL hfhhNameOnly$CallID <- NULL三、去重
可以使用R中的unique()函數去掉名字中的重復行。
代碼示例如下:
去重完成后,將整理好的數據存為csv文件。
代碼示例如下:
四、補充介紹正則表達式
正則表達式在很多語言上都經常用到,在這簡單整理一下:
https://www.runoob.com/regexp/regexp-intro.html
這個網站里面介紹的超級全面,存在這里留著看,感謝大佬,感謝互聯網。
總結
以上是生活随笔為你收集整理的《深入浅出数据分析》第十三章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风之大陆安卓苹果能一起玩吗
- 下一篇: 导入第三方依赖库slidingmenu