Excel~R~Analysis

目标:对给定的Excel数据表里的数据进行简单处理,解答相关问题。

源数据:朝阳医院2016年销售数据.xlsx

问题:根据表格数据得出

1.月均消费次数(注:同一天内,同一个人发生的所有消费算作一次消费 月消费次数=总消费次数/月数)

2.月均消费金额(注:同一天内,同一个人发生的所有消费算作一次消费 月消费金额=总消费金额/月数)

3.客单价(客单价=总消费金额/总消费次数)

4.消费趋势(周-消费金额曲线)

R的解决方案:

Step1:读取源数据

在RStudio中,可以采用多种方法导入源数据,在导入过程中,最值得注意的是“如何正确输入源数据路径”这一问题。我在具体实践中发现,由于原数据文件的命名为中文模式“朝阳医院2016年销售数据”,导入时系统总提示路径过长,于是将其重命名为长度较短的英文名称,例如“data”。果然顺利导入:

脚本中输入

Sell_data <- read_excel("C:/Users/Administrator/Desktop/data.xlsx")

View(Sell_data)

显示:

没有乱码,显示正常。

Step 2:数据预处理

数据预处理是一个重要的步骤,原始数据经过预处理(列名重命名、缺失数据剔除、日期处理、数据类型转换以及数据排序)才能更为有效地进行数据分析工作。

列名重命名   首先,为了编码的正常进行,对中文模式的项目名称进行英文重命名,即将表中的“购药时间、社保卡号、商品编码、商品名称、销售数量、应收金额以及实收金额”重命名为“"Time"、"Cardno"、DrugID"、"DrugName"、"SaleNumber"、"Virtualmoney"以及"Actualmoney"。

脚本编码如下:

#rename

names(Sell_data) <- c("Time","Cardno",

"DrugID","DrugName",

"SaleNumber","Virtualmoney",

"Actualmoney")

如图所示,命名成功:

缺失数据剔除   在药物销售表格中,最常见的缺失数据na(Not Available,不可用)是购药时间,合理运用逻辑运算符以及缺失数据函数na.omint()就可以删除所有含有缺失数据的行。


这里,我们选用“!”这一逻辑运算符,表示“非”的意思。再配合相应缺失值语句,写入脚本:

#删除缺失数据

Sell_data <- Sell_data[!is.na(Sell_data$Time),]

如图,6579行缺失数据被剔除成功

日期处理在“Time”项下,我们发现日期是以字符串的形式出现的(日期+星期),为了便于数据分析,需要将字符串拆分为相应的单列字符,这就需要R语言字符串处理包Stringr来帮忙。

输入脚本

#step3:处理日期

TimeSplit <- str_split_fixed(Sell_data$Time, " ",2)

Sell_data$Time <-TimeSplit[,1]

结果显示

这说明字符串处理包Stringr并未导入,此时,我尝试点击右下角目录框中R语言字符串处理包Stringr,

再运行,结果正常:

Time里的字符串被成功分成两列字符。

数据类型转换由于运算的需要,需将Time中的字符型向量由“character”转换为日期型Date"格式。

脚本输入:

#字符串转换为日期格式

Sell_data$Time <- as.Date(Sell_data$Time,

"%Y-%m-%d")

class(Sell_data$Time)

结果为:

同样地,像销售数量、应收金额以及实收金额("SaleNumber"、"Virtualmoney"以及"Actualmoney")这些数据也都可以转换为数值类型:

脚本输入:

#step4:数据类型转换

#销售数量

Sell_data$SaleNumber <- as.numeric(Sell_data$SaleNumber)

#应收金额(打折前的金额)

Sell_data$Virtualmoney <- as.numeric(Sell_data$Virtualmoney)

#实收金额(打折后的金额)

Sell_data$Actualmoney <- as.numeric(Sell_data$Actualmoney)

#查看类型

class(Sell_data$SaleNumber)

结果为:

转换成功!

数据排序最后,对销售数据按照时间升序进行排列

运行脚本后,结果如下:

排序没毛病~

总结:经过列名重命名、缺失数据剔除、日期处理、数据类型转换以及数据排序等五个步骤,数据处理完毕。

Step3:数据分析

有了符合要求的数据,才可以正常进行数据分析这个步骤。本次需要解答的问题是:

根据表格数据得出:

1.月均消费次数(注:同一天内,同一个人发生的所有消费算作一次消费 ;月消费次数=总消费次数/月数)

2.月均消费金额(注:同一天内,同一个人发生的所有消费算作一次消费; 月消费金额=总消费金额/月数)

3.客单价(客单价=总消费金额/总消费次数)

4.消费趋势(周-消费金额曲线)

答一:

思路:

根据公式:月消费次数=总消费次数/月数,所以只要获取总消费次数和月数即可。由于同一天内,同一个人发生的所有消费算作一次消费,所以得剔除其本人当天超过一次的消费记录。月数则根据30天为1个月进行粗略计算。

脚本:

# 业务指标1:月均消费次数

#-------------------------------------------------------

kpi1 <- Sell_data[!duplicated( Sell_data[,c("Time","Cardno")]),]#采用逻辑符号“!”以及"duplicated()"语句就能筛选出非重复的消费次数。

ConsumeNumber <- nrow(kpi1) #总消费次数相当于行数

运行得:

可得总消费次数为5394;

接着运行脚本,得出月数:

#月数根据时间范围计算

#最小的时间值

StartTime <- kpi1$Time[1]

#最大的时间值

EndTime <- kpi1$Time[nrow(kpi1)]

#天数

Day <- as.numeric(EndTime -StartTime)

#月数

Month <- Day %/% 30 #整除法得出月数为6

#月均消费次数

MonthConsume <- ConsumeNumber / Month

MonthConsume <- format(round(MonthConsume, 2), nsmall = 2)

最后得出月均消费次数为899次/月。

答二:

思路:

根据公式:月消费金额=总消费金额/月数,所以只要获取总消费金额和月数即可。本次计算中,总消费金额是实际消费金额的总和,月数则根据上次计算的6个月计算即可。

脚本:

TotalMoney <- sum(Sell_data$Actualmoney,na.rm=TRUE)#采用函数sum求和,并用na.rm剔除缺失值,最终为只对有效值进行求和。

MonthMoney <- TotalMoney / Month

最终求得月消费金额为50776.38元。

答三:

思路:根据公式,客单价=总消费金额/总消费次数

脚本:

# 业务指标3:客单价pct(per customer transaction)

pct <- TotalMoney / ConsumeNumber

pct <- format(round(pct, 2), nsmall = 2)#保留小数点后两位

结果得:

最终求得,客单价为56.48元/次

答四:

思路:绘制消费趋势曲线,可以以周为时间横轴,周累计消费金额为纵轴,绘制折线图的方式得出周-消费金额曲线。

脚本:

# 业务指标4:消费曲线图

#-------------------------------------------------------

week <- tapply(Sell_data$Actualmoney, format(Sell_data$Time, "%Y-%U"), sum)#据说利用tapply()函数进行数组分类,sum()函数分别求和。

week <- as.data.frame.table(week)

names(week) <- c("Time","Actualmoney")

week$Time <- as.character(week$Time)

week$TimeNumber <- c(1:nrow(week))

plot(week$TimeNumber, week$Actualmoney,

xlab="时间(第几周)",

ylab="消费总金额",

xaxt = "n",

main= "2016年朝阳医院消费趋势",

col="red",

type="b")

axis(1.5,at=week$timeNumber, labels=week$time, cex.axis = 1.5)

!!!目前对于tapply()函数进行数组分类,sum()函数分别求和这串神奇的组合表示有点懵!!!是不是先由format(时间,“%Y-%U”)这个函数把时间按周排序,然后再采用sum()求和,最后以分组的形式呈现????

这个得自己去查询了!!!

最后画出了消费趋势图:

从图中,就可以轻松得知2016年朝阳医院每周的消费总额以及消费高低等信息,从而获取消费趋势。

总结:

本次通过导入源数据、数据预处理以及数据分析三个步骤,解决了4个实际问题。从一张2016年朝阳医院药房销售数据excel表格,得出月均消费次数(899次/月)、月均消费金额(50776.38元/月)、客单价(56.48元/次)、消费趋势图。这几个数据可以大致反应2016年朝阳医院药房每月的消费人数、消费金额、人均消费水平,还可以分析药品销售的淡季旺季。同理,这种数据分析方式可应用到其它商品当中。

本次数据分析为较为基础的excel数据处理分析,具体应用到的语句、函数、运算符如下:

路漫漫其修远兮,少年仍需加油啊!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,965评论 6 13
  • 实践目的:用R语言对数据进行简单处理操作,包括处理缺失数据,数据类型转换等,以及根据源数据作出对应的消费趋势图。 ...
    希日晞阅读 828评论 1 1
  • 本文来自于 猴子数据分析社群的通关作业,因为课程是用 R 语言教的,我是用 Python 实现了一遍,所以参考的文...
    禹洋阅读 4,879评论 1 62
  • 5月5日22:00我在江北机场,等一趟不确定的航班,一趟本应在11:35飞往上海的航班,因为流量管制,被改签到17...
    蒙蒙奇2018阅读 366评论 1 1
  • 1.侯局长讲话水平好,要学习,有一套思维在里面,再者有些事情要用讲话的方式说出来,练习表达能力。 2.要照顾好母亲...
    智囊团阅读 182评论 0 0