R語言學習之簡單數據分析

本次實踐通過分析朝陽醫院2016年銷售數據,得出「月均消費次數」、「月均消費金額」、「客單價」、「消費趨勢」等結果,並據此作出可視化圖形。

一、讀取數據:

library(openxlsx)n#1、讀取目標數據nsalesData <-read.xlsx("D:/test/朝陽醫院2016年銷售數據.xlsx,sheet=1")n

二、對數據進行預處理:

1、列名重命名:打開excel表格發現列名都是中文名稱,所以這裡要對列名進行修改。

names(salesData) <- c("time","cardno","drugId","drugName","saleNumber","virtualmoney","actualmoney")nsalesData #列印查看結果n

顯示結果如下:

2、檢測缺失數據:如出現「TRUE」則為缺失值,需要處理。

#(2)檢測缺失數據nis.na(salesData)n

3、處理日期:

我們看到,導入的【time】列的日期是包含字元串的,所以需要把字元串分離提取需要的部分,這裡用到stringr包,導入即可。

#(3)處理日期nlibrary(stringr)#導入字元串處理包ntimestrsplit <- str_split_fixed(salesData$time," ",n=2)nsalesData$time <- timestrsplit[,1]nclass(salesData$time)#檢測數據類型n#myformat <-"%m/%d/%y"nsalesData$time <-as.Date(salesData$time,"%Y-%m-%d")#轉換為日期類型nclass(salesData$time)#檢測數據類型n

顯示結果如下:

4、其他類型轉換:

#(4)其他類型轉換nsalesData$cardno <- as.numeric(salesData$cardno)nsalesData$saleNumber <- as.numeric(salesData$saleNumber)nsalesData$virtualmoney <- as.numeric(salesData$virtualmoney)nsalesData$actualmoney <- as.numeric(salesData$actualmoney)n

5、用order進行排序:

salesData <-salesData[order(salesData$time),]#將salesData按時間進行排序n

顯示結果如下:

三、獲取目標數據指標:

1、月均消費次數

#計算月均消費次數nkpi1 <- salesData[!duplicated(salesData[c("time","cardno")]),]#定義變數kpi1,存儲time和cardno的非重複值nconsumeNumber <- nrow(kpi1) #計算總消費次數nstartTime <-kpi1$time[1]nstartTimenendTime <-kpi1$time[nrow(kpi1)]nendTimenday <- endTime-startTime #計算總天數nday#計算不同的天數為200天nmonth <- 200%/%30 #對月份求余nmonthnmonthConsume <- consumeNumber/month nmonthConsume n#得出月均消費次數為899n

2、月均消費金額

#計算月均金額ntotalMoney <- sum(salesData$actualmoney,na.rm = TRUE)#計算總金額nmonthMoney <- totalMoney/6nmonthMoneyn#得出月均消費金額為50771n

3、客單價

#計算客單價nkdj <-totalMoney/consumeNumbernkdjn#得出客單價為56.4n

4、分組計算周消費金額

#計算周消費金額

week <- tapply(salesData$actualmoney,format(salesData$time,"%Y-%U"),sum)

week

四、繪製簡單圖表

week <- as.data.frame.table(week)#構造week數據框nnames(week) <- c("time","actualmoney")#對列表重命名nweek$time <-as.character(week$time)nweek$timeNumber <-c(1:nrow(week))nnplot(week$timeNumber,week$actualmoney,nxlab="時間(年份-第幾周",nylab="消費金額",nxaxt="n",nmain="2016朝陽醫院消費曲線",ncol="blue",ntype="b")naxis(1,at=week@timeNumber,labels = week$time,cex.axis = 1.5)n

顯示結果如下:

五、小

本文主要運用了《R語言實戰》中第三章和第四章的知識,參考了猴子老師《簡單數據分析和處理》課件,其中stringr和tapply還不太熟練,需要繼續查閱資料。在實踐中發現遇到問題實現不了自己想要達到的效果就會一直停留在這個問題上,浪費了許多時間在解決bug上,導致學習進度被拖慢了很多,不知道有沒有好的改進辦法。

上周寫的《R語言爬取天貓數據並做簡單分析》意外收穫了幾十條贊,真的小小吃驚了下,可見持續實踐和寫作確實會帶來「驚喜」,但我自己也明白,路漫漫其修遠兮,我的數據分析之路也只是剛剛上路,祝自己和各位一起加油!


推薦閱讀:

城市發展帶來的大數據?大數據對城市發展的預測作用?
藍色巨人IBM的變革與復興,大數據時代的人工智慧 IBM Watson
美國致力於大數據分析的公司有哪幾個?
猴子數據分析第四關 複雜數據分析

TAG:R编程语言 | 大数据分析 | 数据结构 |