r 保留之前曲线_R简单数据处理和分析
本文為猴子老師數據分析系列課程第3講:簡單數據處理和分析的具體實踐。
數據:朝陽醫院2016年銷售數據.xlsx
業務指標:
■ 月均消費次數 ■ 月均消費金額 ■ 客單價 ■ 消費趨勢
R的解決思路與步驟:
一、讀取Excel數據
二、對數據進行預處理
Step1:列名重命名
Step2:刪除缺失數據
Step3:處理日期
Step4:數據類型轉換
Step5:數據排序
三、 數據分析
1、月均消費次數(注:同一天內,同一個人發生的所有消費算作一次消費。月均消費次數=總消費次數/月份數)
2、月均消費金額(月均消費金額=總消費金額/月份數)
3、客單價(客單價=總消費金額/總消費次數)
4、消費趨勢(以周-消費金額繪制曲線圖)
在練習時碰到好幾個陌生的函數,在具體的步驟展現之前,先補充一下針對這些陌生函數我通過查找資料整理的一些函數運用相關知識:
★★★ 字符串處理包stringr中,str_split( ) 與 str_split_fixed( )函數,用于分解字符串。
▼str_split(string, pattrn, n = Inf, simplify = FALSE),默認simplify = FALSE,返回的結果是字符型向量,simplify = TRUE返回的結果是一個矩陣。
▼str_split_fixed(string, pattern, n),返回的結果是一個矩陣。
▼str_split與str_split_fixed,某種條件下可以返回同為矩陣的結果。
★★★ !duplicated,提取唯一的無重復的元素。
★★★ %U,日期格式符號
%U含義:week number of year, with Sunday as first day of week.
★★★ tapply,分組函數,對向量的子集進行操作。
tapply(參數):tapply(向量,因子/因子列表,函數/函數名)
默認simplify = TRUE,把返回的結果本來是一個列表,把它簡化成一個向量。simplify = FALSE,返回得到列表。
ex:tapply(excelData$actualmoney,format(excelData$time,"%Y-%U"),sum)
語句理解:對"excelData$actualmoney"這個向量,按照指定格式"年-周別"進行分組,并對每一組求和。
按照上面的參數, "format(excelData$time,"%Y-%U")"輸出的日期值為一個因子,那應該怎么將它理解成因子,輸出的日期值是有序型變量嗎?有點繞不過來......
★★★ round,數學函數
round(x,digits=n),將x舍入為指定位的小數。
ex:round(3.475,digits=2) 返回值為3.48
★★★ format(x, ...)
ex:format(13.7, nsmall = 3)返回值為13.700,nsmall為小數點后的最小位數。
R處理步驟再現:
一、讀取Excel數據(openxlsx包,可以導入大數據量的Excel數據)
這里使用openxlsx包讀取Excel數據,導入前先安裝、載入"openxlsx"包。
二、對數據進行預處理
Step1:列名重命名(names)
在編碼的世界里,很多操作都是英文方便,將中文的列名重命名為英文。
Step2:刪除缺失數據(!is.na)
從數據框中選出銷售時間不為空的數據。第6579行缺失數據被剔除。
Step3:處理日期(str_split_fixed、as.Date)
在導入的Excel數據里,購藥時間格式為字符串“2016-01-01 星期五”,分拆出我們想要的字符串“2016-01-01”。
將字符串格式的日期轉換為日期格式。
這里沒有給出用于讀入日期的適當格式,是因為日期值的默認輸入格式為%Y-%m-%d。
Step4:數據類型轉換(判斷is,轉換as)
Step5:數據排序(order,默認的排序順序是升序)
對銷售數據按照銷售時間進行升序排序。
三、 數據分析
1、月均消費次數(!duplicated、%/%)(注:同一天內,同一個人發生的所有消費算作一次消費。月均消費次數=總消費次數/月份數)
在獲取總消費次數時注意,根據消費數據里的購藥時間、社保卡號先判斷出哪些消費數據是重復的(購藥時間和社??ㄌ杻蓚€值都相同的數據為重復,只能算作一次消費), 再去掉重復的數據,只保留一條記錄。
獲取時間范圍(天數)
計算月份數,這里只考慮一個月30天的情況,沒有考慮復雜的情況。
月均消費次數,舍入保留為小數點后兩位。
2、月均消費金額(sum、na.rm=TRUE)(月均消費金額=總消費金額/月份數)
3、客單價(客單價=總消費金額/總消費次數)
門店的銷售額是由客單價和顧客數所決定的。
舍入保留為小數點后兩位。
4、消費趨勢(tapply、plot)(以單位周的消費金額繪制曲線圖)
分組函數tapply計算出每周的消費總金額
運用tapply計算后得到的是一個二維數組,一維是第幾周的序號,二維是對應的這周的消費總金額,將生成的數組轉換成數據框結構。
對轉換后的數據框列名進行重命名,并獲取周別數,即具體分成了多少周。
** 這里查看了對象week$time的類型,顯示為因子,符合前文對tapply(參數):tapply(向量,因子/因子列表,函數/函數名)的說明。
繪制曲線圖
曲線圖是畫出來了,但是還有最后一點疑問未解決,就是在對tappy函數生成的二維數組進行數據框轉換時,為什么使用的代碼是as.data.frame.table,這跟使用as.data.frame有什么區別??
總結
以上是生活随笔為你收集整理的r 保留之前曲线_R简单数据处理和分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联通突然从4g变成3g了_中国联通最快明
- 下一篇: 多个容器一起打包_程序员修神之路容器技术