小白学R—简单数据分析

一、本关目标

对“朝阳医院2016年销售数据.xlsx"中的数据进行处理和分析,并完成4个指标:1.月均消费次数;2.月均消费金额;3.客单价;4.消费趋势。

二、数据清洗

1、读取文件

# 将Excel数据变为csv格式后导入
exceldata<-read.table(file.choose(),header = TRUE,
                 sep=",",stringsAsFactors = FALSE)

2、列重命名

# 对列名进行重命名,可使用names()函数或者交互式编辑器fix()
names(exceldata) <- c("time","cardno","drugID","drugName",
                      "saleNumber","virtualmoney","actualmoney")

3、处理缺失值

exceldata<- exceldata[!is.na(exceldata$time),]
# na.omit()删除所有含缺失数据的行,适用于只有少数缺失值或缺失值集中在一小部分观测中

4、处理日期值

# 用stringr包中的字符串匹配函数:str_split_fixed()
library(stringr)
timesplit <- str_split_fixed(exceldata$time," ",n=2)
exceldata$time <- timesplit[,1]

str_split () 与str_split_fixed ():字符串分割函数

str_split(string, pattern, n = Inf, simplify = FALSE)
str_split_fixed(string, pattern, n)
参数列表:
string: 字符串,字符串向量。
pattern: 匹配的字符
n: 分割个数(最后一组不会被分割)。

  • str_split()与str_split_fixed()的区别在于前者返回列表格式,后者返回矩阵格式。
  • 当str_split()中simplify = TRUE时,返回矩阵格式。

5、类型转换

为了指标的计算,需要将数据进行类型转换:

# 购药时间
exceldata$time <- as.Date(exceldata$time,"%Y-%m-%d")
# 销售数量
exceldata$saleNumber <- as.numeric(exceldata$saleNumber)
# 应收金额
exceldata$virtualmoney <- as.numeric(exceldata$virtualmoney)
# 实收金额
exceldata$actualmoney <- as.numeric(exceldata$actualmoney)

6、数据排序

# 按照购药时间对数据进行升序排列
exceldata <- exceldata[order(exceldata$time,decreasing = FALSE),]
# order()默认decreasing = FALSE,升序排列

三、指标计算

1、月均销费次数=总消费次数(去重)/月份数

# 总消费次数(去重):5398
kpi1 <- exceldata[!duplicated(exceldata[,c(1,2)],fromLast = FALSE ),]
consumeNumber <- nrow(kpi1)
# duplicated()默认fromLast=FALSE,即若样本点重复出现,则取首次出现的;去掉重复样本值之后的行名

数据去重参考: http://blog.csdn.net/qq_35242986/article/details/68927909

# 月份数:6
starttime <- kpi1$time[1]
endtime <- kpi1$time[nrow(kpi1)]
days <- endtime-starttime
months <- as.numeric(days)%/%30
# days为日期值,不能直接用除法,需要转换类型

得到月均消费次数:899

# 月均消费次数
monthconsume <- consumeNumber/months

2、月均销费金额=总消费金额/月份数

# 总消费金额:304630.3
totalmoney <- sum(exceldata$actualmoney,na.rm = TRUE)

得到月份消费金额:50771.71

monthmoney <- round(totalmoney/months,2)

3、客单价=总消费金额/总消费次数(去重)

# 客单价:56.43
pct <- totalmoney/consumeNumber

4、消费趋势

# 使用分组计算函数tapply(),以周的形式对实收金额进行分组计算
week <- tapply(exceldata$actualmoney,
               format(as.Date(exceldata$time),"%Y-%W"),sum)

%W从周一到周日计算,%U从周一到周六计算,貌似%W更符合中国人的统计习惯。
关于更多日期格式,请参考:https://www.douban.com/note/347509632/

# 把数组形式的week转换成数据框形式
week <- as.data.frame.table(week)
# 对数据框week的观测进行重命名
names(week) <- c("time","actualmoney")
# 转换变量类型
week$time <- as.character(week$time)
# 在week数据框中增加一列变量
week$timenumber <- c(1:nrow(week))
# 绘制图表
plot(week$timenumber,week$actualmoney,
     xlab = "时间(年份-第几周)",
     ylab = "消费金额",
     xaxt = "n", 
     main = "2016年朝阳医院消费曲线",
     col = "blue",
     type ="b")
axis(1,at=week$timenumber,labels = week$time,cex.axis=1.5)
# 去除x轴上的刻度线
# cex.axis 坐标轴刻度文字的缩放倍数


R语言plot函数参数合集:http://www.cnblogs.com/wutongyuhou/p/5873056.html

四、问题

1 、对于基本的数据分析“套路”还不清楚,只是跟着操作。
2、 对于很多函数以及里面的参数设置不熟悉,不清楚如何使用。
跟着老师的操作进行了练习,其中出现了很多问题,大部分都能够自己解决。为了更清晰的理解和记忆,还需要找一些数据试着操作一下,发现问题,解决问题,才是学习的最佳途径。

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

推荐阅读更多精彩内容