標籤:

R語言的簡單數據分析

這一次的嘗試 是根據一份藥物的銷售數據來做簡單的數據分析(為了保護數據來源,所以就改了名字),在做這個簡單的數據處理有幾個步驟:

(1)載入excel數據

(2)數據的預處理,一般會有這幾種預處理

  • 重命名
  • 缺失值的處理
  • 日期的處理
  • 類型轉換
  • 數據排序

(3)數據分析(業務指標演算法)

這是實際的代碼和思路

  • 載入文件,修改列名

library("openxlsx")

> readFilePath <- "F:/Data footage/Rstudio project/data of chaoyang hostpital.xlsx"

> exceldata <- read.xlsx(readFilePath,"Sheet1")

> names(exceldata) <- c("time","cardno","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)

[1] "character"

  • 轉換為日期格式

> exceldata$time <- as.Date(exceldata$time,"%Y-%m-%d")

> class(exceldata$time)

[1] "Date"

  • 將三組數據轉化為數字類型?

> exceldata$salenumber <- as.numeric(exceldata$salenumber)

> class(exceldata$salenumber)

[1] "numeric"

> exceldata$virtualmoney <- as.numeric(exceldata$virtualmoney)

> exceldata$actualmoney <- as.numeric(exceldata$actualmoney)

  • 將數據按照日期來降序排列

> exceldata <- exceldata[order(exceldata$time, decreasing = FALSE),]

  • 將同一個人同一天的消費記錄合併成一個

> kpi1 <- exceldata[!duplicated(exceldata[,c("time","cardno")]),]

  • 算出整個消費次數

    > consumenumber <- nrow(kpi1)

    > consumenumber

    [1] 5394

  • 算出起始時間

> starttime <- kpi1$time[1]

> endtime <- kpi1$time[nrow(kpi1)]

  • 算出總天數,並轉化為數字類型

> day <- as.numeric(endtime-starttime)

  • 算出總月份數

> month <- day %/% 30

  • 算出第一個業務指標:月均消費次數

> monthconsume <- consumenumber / month

> monthconsume

[1] 899

  • 算出第二個業務指標:月均消費金額

> totalmoney <- sum(exceldata$actualmoney,na.rm = TRUE)

> monthmoney <- totalmoney / month

> monthmoney

[1] 50776.38

  • 第三個業務指標:客單價

> pct <- totalmoney / consumenumber

> pct

[1] 56.48095

  • 第四個業務指標:消費趨勢

> 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))

> library("vcd")

> library("grid")

> plot(week$timenumber,week$actualmoney,

+ xlab = "時間(年份-第幾周)",

+ ylab = "消費金額",col.lab = "green",

+ main = "2026年大山神醫院消費曲線",col.main="red",

+ col = "blue", lty = 3, pch = 18, type = "b")

> #axis(1,at= week$timenumber,labels=NULL, cex.axis = 1.5)

在這個過程中,我個人實際操作起來 出現了好幾個地方的錯誤,讓我知道自己還有哪些基礎有理解錯誤,這也是實踐的價值

還是要多敲代碼,加強理解

推薦閱讀:

GrowingIO 數據驅動增長大會——寒冬下的增長英雄
發現有人時空旅行的證據……
經歷絕望之後,來爬取知乎爬了幾張美圖
學習危機:9張圖幫你讀懂《2018年世界發展報告》
股票分析與資產組合(python)

TAG:数据分析 | R |