指導行為--數據分析價值之源

我的問題:最近在某單位的崗位分類表中看到「會計」屬專業技術崗,而一字之差的「統計」屬專輔助技術崗,工資待遇的差距可是幾何級的,職業發展也是天壤之別。心中一萬匹羊駝跑過之後,出現了一個問題:統計有什麼用,數據分析的價值到底在哪裡?(標題就是答案,下面是小白的R實踐過程,大牛請自行跳過)

我的R實踐:還是我們熟悉的《朝陽醫院2016年銷售數據》,課上我們做出了《2016年朝陽醫院消費曲線》及月均消費次數、月均消費金額、客單價等三個KPI指標。現在想想,這個結果除滿足院領導的顯擺欲,順道搭訕一下業務部門美女小夢外,並沒有什麼卵用。

當我懷著然並卵的鬱悶,不斷的點擊著Environment的各種Data和Values時,timeSplit中一個曾被無情忽略的數據引起了我了注意,是不是可以拿它做點什麼呢?

排序面對雜亂無序的數據,第一個想法是排序,照葫蘆畫瓢,使用order()函數對excelDate排序,decreasing = TURE,還是FALSE返回的結果都是詭異的:「星期二」、「星期六」、「星期日」、「星期三」、「星期四」、「星期五」、「星期一」(或正好反過來)。

關鍵字 使用中文關鍵字「R語言 數據排序」,無論是谷哥還是百度,得到的結果基本都是sort(),rank(),order()三個函數的內容。正當我無計可施的時候,想起英文版的R語言實戰。閱讀它雖然還是沒有找到答案,但找到了"sort data"和"in R"兩個關鍵字。(見笑了,奇葩英語學習之路。這也算是英文版的另類用法吧!)

谷哥「How to sort data in R",我找到了提示,原來強在的R也有它小白的一面:想它給你排序,你得用factor()函數先告訴它」誰在先,誰在後「。

weekdaymoney$weekday <- factor(weekdaymoney$weekday,levels=c("星期一","星期二","星期三","星期四","星期五","星期六","星期日"),ordered = T)

匯總還是照葫蘆畫瓢,但這次我學乖了。在help(tapply)得知它不能計數之後,馬上翻譯計數(即:count)谷哥」How to count data in R"

安裝plyr包,使用count()函數,順利得到交易量周變化情況。

library(plyr) COUNT <- count(timeSplit,"timeSplit[,2]")

同時還計算了交易額和客單價的周變化情況,過程很順利,代碼如下:

weekdaymoney <-tapply(excelDate$actualmoney,excelDate$wd,sum)weekdaymoney$mean <- weekdaymoney$actualmoney/weekdaymoney$count

看圖說話 看到上面的表格,估計百分之九十以上的人都在懵逼。

如果你是病人:星期五最好就不要去就診了,待你的只能是排隊、排隊、排隊……和人頭、人頭、人頭……;可以的話星期四去吧等待你的是休息充分,心情輕鬆的醫護人員。

如果你是收費處的排班人員:星期五、星期六兩天最好按排多點同事上班。不然,排隊的群眾有意見,上班的同事也會有意見。

如果你是社保局的督查人員:星期四上班的醫院怎麼會事,都喜歡開大處方嘛?

我的答案先聲明:上述解說純屬玩笑但說明了一個意思:統計有什麼用?關鍵看是否使用統計結果指導行為。如果把統計結果與行為完全隔裂開來,那麼,統計真得沒有卵用。反之,統計就炸天了,它作用超乎你想像。同樣的數據在不同的人面前其價值是不一樣的。對於病人來說,可以指導更好地按排就診時間;對於一線排班人員,可以指導地安排人員作息;對於監查人員,可以有得放失高效開展督查……雖然價值各不相關,但它們產生價值的途徑卻是一至的,就是根據數據分析指導自己的行為。

我的代碼:

##第一大部分數據處理 #載入Excel數據 library(openxlsx) readFilePath <- "C:/朝陽醫院2016年銷售數據.xlsx" excelDate <- read.xlsx(readFilePath,1) #處理缺失數據 excelDate <- na.omit(excelDate) #數據框例重命名 names(excelDate) <- c("time","cardno","drugld","drugName","saleNumber","virtualmoney","actualmoney") #切割數據 library(stringr) timeSplit <- str_split_fixed(excelDate$time," ",n=2) WD <- data.frame(wd=timeSplit[,2]) excelDate <- cbind(excelDate,WD)##第二部分結果展示 library(plyr) COUNT <- count(timeSplit,"timeSplit[,2]") names(COUNT) <- c("weekday","count") weekdaymoney <-tapply(excelDate$actualmoney,excelDate$wd,sum) weekdaymoney <- as.data.frame.table(weekdaymoney) names(weekdaymoney) <- c("weekday","actualmoney") weekdaymoney <- merge(weekdaymoney,COUNT,by="weekday") weekdaymoney$weekday <- factor(weekdaymoney$weekday,levels=c("星期一","星期二","星期三","星期四","星期五","星期六","星期日"),ordered = T) weekdaymoney <- weekdaymoney[order(weekdaymoney$weekday),] weekdaymoney$mean <- weekdaymoney$actualmoney/weekdaymoney$count ##第三大部分結果展示 attach(weekdaymoney) layout(matrix(c(2,3,1,1),2,2,byrow=T)) weekdaymoney$Number <- c(1:7)##生成一周客單價變化情況圖 plot(weekdaymoney$Number,weekdaymoney$mean,xlab="",ylab="客單價",main="一周客單價變化情況圖",las=2,type="b",xaxt="n",bg="blue") axis(1,at=weekdaymoney$Number,labels=weekdaymoney$weekday,cex.axis=1.5) abline(h=mean(weekdaymoney$mean),col="red")#請左單擊滑鼠為紅線加標備 text(locator(1),"平均值")##生成一周交易量變化情況圖 plot(weekdaymoney$Number,weekdaymoney$count,xlab="",ylab="交易量",main="一周交易量變化情況圖",las=2,type="b",xaxt="n",lty=1,pch=23,bg="green") axis(1,at=weekdaymoney$Number,labels =weekdaymoney$weekday,cex.axis=1.5) abline(h=mean(weekdaymoney$count),col="red")#請左單擊滑鼠為紅線加標備 text(locator(1),"平均值")##生成一周交易額變化情況圖 plot(weekdaymoney$Number,weekdaymoney$actualmoney,xlab="",ylab="交易額",main="一周交易額變化情況圖",las=2,type="b",xaxt="n",lty=1,pch=23,bg="yellow") axis(1,at=weekdaymoney$Number,labels =weekdaymoney$weekday,cex.axis=1.5) abline(h=mean(weekdaymoney$actualmoney),col="red") #請左單擊滑鼠為紅線加標備 text(locator(1),"平均值") detach(weekdaymoney)

感謝:

謝謝您花時間讀到這裡,尤其是作出評論的親。數據分析學習之路,有您真好!

推薦閱讀:

怎麼樣進行深刻學習?親自動手?經典書籍?
如何理解「哲學家們只是用不同的方式解釋世界,而問題在於改變世界」?

TAG:R编程语言 | 实践 | 数据统计 |