標籤:

《深入淺出數據分析》實踐案例

這次的任務是來自《深入淺出數據分析》第13章的靈感,在原書中,採用的方法是:Excel先準備好數據,然後再採用R語言對數據進行更進一步的處理,在這次任務中,我將全部採用R語言分析獵頭公司的客戶信息文檔。

  1. 安裝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分鐘入門教程:deerchao.net/tutorials/


推薦閱讀:

用ggplot2構造期待已久的雷達圖
【R語言基礎】01.R語言軟體環境搭建及常用操作
Learn R | 機器學習中的人工神經網路(二)
knn到底咋回事?(修改版)

TAG:R编程语言 |