數據分析第三關,簡單數據處理
第二關過後,打開第三章有點蒙,這是啥呀!
可是不管三七,還是二十一,硬著頭皮看完兩張,然後書把代碼敲了一遍。(為了做練習買了一本實體書,感覺還是很方便的)然後才是聽猴子的課程。
自己感覺速度有點慢,解決的辦法只有壓榨自己了。加油!!!
#導入數據
install.packages("openxlsx")library("openxlsx")readFilsPath<-"/Users/tusm/data/朝陽醫院2016年銷售數據的副本.xlsx"excelData<-read.xlsx(readFilsPath,"Sheet1")
這次導入很順利,而且很快,記得上一關,導入數據就研究了兩天。。。。。
#列名的重命名
names(excelData)<-c("time","cardon","drugID","drugNAME","saleNumber","virtualmoney", "actualmoney")
猴子說是為了方便,我試驗了一下,應為中文經常出亂碼。
#處理缺失值
excelData<-excelData[!is.na(excelData$time),]
最後一個「,」一定要注意啊!可能只有我總是丟三落四的!
#處理日期
library(stringr)timeSplit<-str_split_fixed(excelData$time," ",n=2)excelData$time<-timeSplit[,1]class(excelData$time)excelData$time<-as.Date(excelData$time,"%Y-%m-%d")class(excelData$time)
還是丟三落四的問題:
1.沒有載入「stringr」,所以提示「沒有str_split_fixed這個函數」
2.excelData$time<-as.Date(excelData$time,"%Y-%m-%d")這條代碼總是有錯,原來是自己忘記了給%Y-%m-%d加上「」。
#銷量數據
excelData$saleNumber<-as.numeric(excelData$saleNumber)
#應收金額(打折前的金額)
excelData$virtualmoney<-as.numeric(excelData$virtualmoney)
#實收金額(打折後的金額)
excelData$actualmoney<-as.numeric(excelData$actualmoney)
#按銷售時間對數據進行降序排列
excelData<-excelData[order(excelData$time,decreasing = FALSE),]
#業務指標1:月均消費次數=總消費次數/月份數
kpi1<-excelData[!duplicated(excelData[,c("time","cardon")]),]
#總消費次數
consumeNumber<-nrow(kpi1)
#月份數
#step1:獲取時間範圍
#最小時間值
startTime<-kpi1$time[1]
#最大時間值
endTime<-kpi1$time[nrow(kpi1)]
#天數
day<-endTime-startTimeday<-as.numeric(day)
#月份數
month<- day %/% 30
#月均消費次數
monthConsume<-consumeNumber/monthmonthConsume
#業務指標2:月均消費金額=總消費金額/月份數
#總消費金額
totalMoney<-sum(excelData$actualmoney,na.rm = TRUE)monthMoney<-totalMoney/monthmonthMoney
#業務指標3:客單價=總消費金額/總消費次數
pct<-totalMoney/consumeNumberpct
#業務指標4:消費趨勢
#計算每周消費金額
week<-tapply(excelData$actualmoney,format(excelData$time,"%Y-%U"),sum)
#繪製曲線圖
week<-as.data.frame.table(week)names(week)<-c("time","actualmoney")week$time<-as.character(week$time)week$timeNumber<-c(1:nrow(week))par(family=STKaiti) #這條代碼是因為mac下plot繪製的圖形中的中文是方框,加上它就好了plot(week$timeNumber,week$actualmoney, xlab = "時間(年份-第幾周)", ylab = "消費金額", xaxt="n", main = "2016年朝陽醫院消費曲線", col="blue", type="b")axis(1,at=week$timeNumber,labels = week$time,cex.axis=1.5)
經過了三關的學習,發現自己的前面的計劃制定是不合理的,準備改變對自己的獎勵機制:
通關前四關,獎勵自己一個kindle。
後面每關一千元獎勵。(今年換手機的時候給自己換一個貴一點的)
推薦閱讀:
※通過數據洞察世界
※記錄我是如何轉型大數據分析(二)——iris
※mysql查詢初級 50道練習題(語句親測無錯)
※學習數據分析的意義和實踐計劃
※誰說菜鳥不會數據分析·筆記
TAG:數據分析 |