《第三关-简单数据分析》

首先预习了《R语言实战》的第三章和第四章,第三章主要讲的是关于简单的绘图,对于R的绘图有了一定的了解。第四章是基本数据管理,讲了一些基本的操作,对变量的处理,对缺失值的处理,还有日期值是一个以前没有考虑过的概念,要很好的运用和处理恐怕还需要很多实践。类型转换和数据排列都是很实用的工具,但是距离我自己主动运用还有很长的路要走。

看完这两章的内容,并且听完了猴子老师的课,总共花了三天的时间。由于平时的工作中没有可以接触到的可用的表格数据,我决定把老师给的数据和指标按照自己的思路做一遍,看看不一样的地方在哪。

猴子老师这一课讲得较快,而且对于各种函数用法不熟悉的我来说,听完一遍,只是有个初步的印象。

自己凭着记忆,并且按照自己已知的去操作实践,实在不行的时候,再去翻翻ppt,直到最后第四个指标实在不知道怎么做的时候,再打开源代码看看,下面是我的实践记录:

首先整理一下思路:

1 目标是什么:

根据提供的销售数据表,得到:月均消费次数,月均消费金额,客单价,消费趋势。

2 打开数据表,看看有什么内容:

购药时间,社保卡号,商品编码,商品名称,销售数量,应收金额,实收金额。

注意到社保卡号有重复的,那就说明,同一个人会有多次购买的情况。

时间格式为“2016-01-01 星期五”这样的形式,但是顺序是混乱的。

商品编码和名称,有重复和混乱的情况,不过在这里不是重点。

销售数量,应收金额,实收金额等都是具体的数字。

3 如何获得分析结果:

a 月均消费次数,这个是比较简单的数学运算,总的消费次数/月份数,这里的月份数应该是这个表中所记录到的月份数,默认一年是12个月,但是我好想并没有看到11月和12月,这个可能是数据的缺失,但是不影响对于目标的分析。

b 月均消费金额,和上一个指标类似,总的消费次数/月份数。

c 客单价,就是每个人的平均消费金额,总的消费金额/人数,这个人数不应该是人次,因为有人多次购买,可以用社保卡号区分出来。

d 消费趋势,即每周的消费总额,这里需要按一个周的时间来统计消费金额,当然我想按月统计应该也是可以的。

4 具体的操作步骤:

一 数据处理:

a 如何用R导入excel数据表,这里用到openxlsx包,具体的函数为:read.xlsx(),返回的是一个数据框,如下图所示:

b 这个表的每一列名称都是中文,但是中文操作不那么方便,我们需要把它们重新命名为英文,即列表重命名。

重命名的函数有fix(),但是这个函数只能手动修改,不实用。

另一种方式是使用names()函数,返回的是每一列名称的向量,不仅可以读取名称,还可以修改,代码如下:

第三种方式是函数:rename(x, replace, warn_missing = TRUE, warn_duplicated = TRUE),注意要先安装plyr包,replace=c(),oldname(修改前的名称)不加双引号,新名称需要加双引号,这个好处在于不用考虑顺序。如图所示:

c 删除缺失数据:

关于缺失值处理的函数,参考《R语言实战》4.5。

函数is.na(),判断某个向量或数据框等中的元素是否为NA,返回false或者true。这里有个神奇的用法,值得学习:

即判断时间那一列,用!(非)来剔除NA行。

na.rm=true,用于sum函数加和,若是元素中有NA值,则会返回NA值,这条判断语句可以删除NA值,然后把剩下的数据相加。

na.omit(),删除含有缺失数据的行,返回删除这些行后的数据框。

d 处理日期

日期在R语言中处理的比较多,是一个重要的指标,关于日期的处理,可以参见《R语言实战》4.6 P76:

as.Date(x,"input_format"),以数值形式存储日期变量。

给的表中日期为“2016-01-01 星期五”,但是我们需要的是“2016-01-01”,日期值的默认输入格式为yyyy-mm-dd,代码如下:

另一种猴子老师给的方法是,安装stingr包,利用str_split_fixed()函数,将字符串分离,代码如下:

e 数据类型转换

需要将日期转换为date类型,才能进行相应的日期函数的处理。代码如下:

f 数据排序

用到order()函数,默认的排序是升序,代码如下:

结果如下:

若要降序,需要加入参数,decreasing=True,猴子的代码:

二 数据分析

a 月均消费次数

注意,同一天内,同一个人多次消费算一次。

这里用到函数duplicated() ,判断哪些元素是比它下标小的元素的复制,输出是一个逻辑值,而这个逻辑值可以用于筛选数据框的行和列,代码如下:

kpi1是一个新的向量,把和date&cardno都一样的“复制行”都给删了,而它的行数就是总的消费次数。

接下来是统计月份数,首先要知道总天数,有了总天数,除余30天,就可以得到有几个月。代码如下:

得到结果,899.67次,用函数format和round使其显示小数点后六位。

b 月均消费金额

首先要得到总的消费金额,再除以月份数即可。这里要用到sum()函数,代码如下:

得到结果,50771.71元每月。

猴子老师的代码如下:

c 客单价

首先要知道有多少客户,用总的消费金额除以客户数量即可。

这里的客户数量,我的理解有误,我认为是整个时间段内同一个客户多次购买行为只算一次,但其实猴子老师给的客户数量是同一天同一个客户的多次购买行为只算一次,于是我的代码如下:

得到结果,125.57元/客。

猴子老师的代码,这里的consumeNumber<-nrow(kpi1):

得到结果:56.43元/客。

d 消费趋势

消费趋势指的是每周的营业额的走势,需要绘制图形。

这里要用到分组函数tapply(),但是具体的用法不是很清楚,跟着猴子的代码打了一遍,如下:

得到结果如下:

关于绘图的操作可以看《R语言实战》第三章相关内容。

总结与疑问:

即使听课的时候听懂了,实际操作起来也是麻烦重重,正是“纸上得来终觉浅,绝知此事要躬行”。

我想主要的难点在于:

1 对于基本的数据分析“套路”还不清楚,思路比较混乱,甚至连一开始的思路都没有。

2 对于很多函数以及里面的参数不熟悉,不知道如何设置,不清楚如何使用。

自己磕磕碰碰地按照自己的思路“爬了一遍”,其中也出现了很多问题,大部分都通过Google,Rstudio中的帮助,以及自检解决了。有一点心得:处理数据时,少新造一些变量名,自己容易搞混,之后还会忘了使用。

还有一些疑问,记录下来:

1 rtools是干什么的,Google了一下并没有找到满意的答案?

2 我自己把excel表格中的某个数改为NA或者直接删掉,但是却无法用函数is.na()判断出来?

3 as.Date()并不能改变已有的日期字符串的年月日顺序,但是可以把后面的“星期五”给删除了,那么用什么函数可以改变日期的显示格式呢?

4 insatll.packages("stringr")和 insatll.packages('stringr'), 前者不行,后者成功?

5 关闭Rstudio之后,第二天打开,代码中的中文变成了乱码?

6 tapply() ,format() ,as.data.frame.table()用法不清楚?

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

推荐阅读更多精彩内容