《深入淺出數據分析》實踐案例
這次的任務是來自《深入淺出數據分析》第13章的靈感,在原書中,採用的方法是:Excel先準備好數據,然後再採用R語言對數據進行更進一步的處理,在這次任務中,我將全部採用R語言分析獵頭公司的客戶信息文檔。
- 安裝openxlsx包並載入包
install.packages("openxlsx")library("openxlsx")
其中在安裝openxlsx包的時候出現了此warning提示,在將R語言更新到R 3.4.1後,warning提示就自動消失了。
2. 導入xlsx文件
readFilePath <- "E:/R language/data/hfda_ch13_raw_data.xlsx"Candidate_list <-read.xlsx(readFilePath, "hfda_ch13_raw_data")
數據形式如下,可以看到數據一團亂麻:
原始數據
3. 數據整理
- 混亂的數據整理拆分成多個列,得到基本待處理數據;
install.packages("stringr")library(stringr)as.data.frame(Candidate_list)sub_Candidate <- str_split_fixed(Candidate_list[,1], "#", 7 )fix(sub_Candidate) //重命名標題as.data.frame(Candidate_list)FirstName_split <- str_sub(sub_Candidate[,2], 2, str_length(sub_Candidate[,2]) ) //去除Firstnam中的"^"NewLastname <- sub("?=\(.*\)","",sub_Candidate[,3]) //慮除掉Lastname中()內的字元和數字sub_Candidate[,2]<-FirstName_splitsub_Candidate[,3] <- NewLastname
- 數據深加工
通過上述的操作後,得到了基本可用的數據,但是仔細觀察後會發現,有些數據是重複的,比如第一條和第四條,候選人的名字,Person ID, ZIP, Phone number 都是一樣的,只是Call ID 和 時間不一致, 而Call ID 和時間應該代表的是獵頭公司工作人員的ID 信息和撥打給客戶的時間,是無關緊要信息,可以捨棄,這樣就可以留下關鍵信息。
待處理數據
處理代碼如下:
as.numeric(sub_Candidate[,1])hfhhSorted <-sub_Candidate[order(sub_Candidate[,1]),]hfhhSorted <- hfhhSorted[,c(1:5)]//捨棄 Call ID 和Time 列hfhhSorted_only <- unique(hfhhSorted)write.xlsx(hfhhSorted, file = "hfhhSorted_only.xlsx")
最終數據結果
這裡有個小插曲,在執行write.xlsx(hfhhSorted, file = "hfhhSorted_only.xlsx")出現以下報錯:
Error: zipping up workbook failed. Please make sure Rtools is installed or a zip application is available to R.
Try installr::install.rtools() on Windows. If the "Rtoolsin" directory does not appear in Sys.getenv("PATH") please add it to the system PATH
or set this within the R session with Sys.setenv("R_ZIPCMD" = "path/to/zip.exe")
解決步驟:1.安裝對應Rtools:Building R for Windows
2. 運行Sys.setenv("R_ZIPCMD" = "C:/Rtools/bin/zip.exe")後,再次執行write.xlsx(hfhhSorted, file = "hfhhSorted_only.xlsx")就可以了。
參考文獻:
R語言字元串處理包stringr | 粉絲日誌
正則表達式30分鐘入門教程:https://deerchao.net/tutorials/regex/regex.htm
推薦閱讀:
※用ggplot2構造期待已久的雷達圖
※【R語言基礎】01.R語言軟體環境搭建及常用操作
※Learn R | 機器學習中的人工神經網路(二)
※knn到底咋回事?(修改版)
TAG:R编程语言 |