查看原文
其他

R下的Excel数据的预处理与简单分析

2017-03-06 kaolixin R语言中文社区

2017年2月1日大年初五晚21:00,当大多数人还沉浸春节的各种团圆相聚时,怀揣着梦想与希望和群里的小伙伴一道在“一块听听”平台与猴子拥抱数据分析技能了--《从零学会数据分析:简单数据处理》。零基础学习数据分析之路不孤单,我们相聚在这里,相信我们这样的人新的一天肯定过得差不了。


一、课程复盘

1)数据处理之数据导入:openxlsx库太牛X,上会讲后用"RODBC"和“XLSX”库导入Excel数据被问题小怪各种虐(无法载入程序包‘rJAVA’、odbcConnectExcel is only usable with 32-bit windows等)想想都是哭。


如图就两句,就把6579条记录给导入了。openxlsx的快、准、狠,真是太帅太有型了!



2)数据处理之空值清理:对于数据分析员而言,缺失数据应该算是”第三样“不可避免的事了有谁从不遇空值嘛??R中暂时学到两种方法删除空值:1、na.omit()函数:na即是Not Available,不可用。(为什么不直接用Unavailable呢?只有老美才知道了!)这函数有点霸气会把所有含有缺失数据的行都给干掉。2、!is.na()法:此法为is.na()函数的反向应用。思路是把某字段的Na值找出来,然后把它们排除掉。如下图,红圈的,号是关键。


如果漏了,迎接你的是”undefined columns selected“每一个字去查字典是没有限定的列选择?是不是又被虐了?


补充知识:R中有10个逻辑运算符,但估只有==(严格等于)、!=(不等于)、!X(非Xp)x|y(x或y)、isTRUE(x)测试x是否为TRUE比较奇葩,需要特别记住。


3)数据处理之数列重命名 :使用names()函数可以把data.frame的列名拿出来进行编辑。这里要注意的地方法是:系统只会给校验是否多命名了,但不会校验是否都命名了。


因为之后的操作都是基于列名进行操作的,所以命名出了问题迎接你的将会是各种坑。


4)数据处理之数据切割 :用到的是stringr包的str_split_fixed()函数。代码如下:

library(stringr) timeSplit <- str_split_fixed(excelDate$time," ",n=2) excelDate$time <- timeSplit[,1]

熟悉Excel的亲是不是想起可爱的left()\right()\mid()函数了,反正我是很希望在R下能用它们的。马上试试,结果如图。很可惜是不行的,还是入乡随俗吧!



5)数据处理之数据类型转换: 关于数据类型,R中除了有class()函数外,还有is和as这两对宝贝。但要注意,它们不是一个函数,而是“函数集”(这个名字是我起的小名,大名叫什么有知道的方便就给我留言吧!在这里谢过了!)



除了讲上用到的numeric\character\,vector\matrix\data.frame\factor\logical是不是很熟悉?不是?自己回看上节课的笔记去。


6)数据处理之数据排序:使用的是order()函数,代码如下:

excelDate <- excelDate[order(time,decreasing=FALSE),]

一如既往的需要一个“,”这就是R的风俗吧!decreasing是渐减的意思,想要升序就等于FALSE,反之等于TURE



7)数据处理之数据合并去重: 使用的是duplicated()函数,代码如下:

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

意思是以time和cardno的值为判断重复标准。


8)数据处理之数据分组汇总: 使用的是tapply()函数,代码如下:

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

以周的形式对excelDate$actualmoney

进行汇总求和,把结果赋给week

至此,数据处理工作获得阶段性胜利,体力劳动结束,发图庆祝一下。




9)数据分析之加减乘除:如果说数据处理是整项工作的体力劳动部分,接下来的数据分析应该算脑力劳动部分,它需要你的各种创意和忽悠--不对,应该叫解释说明能力。工欲善其事必先利其器,R用到的算术运算符除+ 加 -减 *乘 /除外,还有^或**:求幂、X%%Y:求余、X%/%Y:整除法。 同时还有求和的sum()函数,需要注意的是它有一个"na.rm="参数,默认为FLASE,在此情况下,求和的数据中如果有NA值,返回的是NA。



9)数据分析之结果的展示:课上只是简单的使用了plot()和 axis()两个函数,更多更细的内容可以参看《R语言实战》第 3章 图形初阶或者我的云笔记--《R语言实践笔记第三章》


下面是以月为单位做的一张消费曲线图,还可以以星期为单位看看星期几的消费量最高,最期几的消费量比较低。


二、RStudio的学习心得 

如果你使用的不是windows7 64位的操作系统请自行跳过下面的内容,因为它们可能不适用你。

1)RStudio的窗口简介



代码编辑器(左上):一个不会回车就有结果的地方,第一次打开RStudio时你是开不到它的,你需要打开(或新建)一个“.R”文件才能看到它。群里有小伙伴遇到Code菜单跟猴子显示不同的情况,就是因为没有把代码编辑器打开;

控制台(english name:Console) (左下):和代码编辑器至少有两个不同:1、它是天生的,找开RStudio就有;2、只要你敢回车,它就给你结果,从不啰嗦,一点除地都不给。同时,代码编辑器运行代码的过程和结果也会这里体现。

工作空间(右上):个人觉得这个名字起得有点嗅!整个窗口哪不是你工作的地方??其实它是各种变量的存储空间,在这里你可以随便点开这些变量,查看它们的情况。是不是有点掌控全局的感觉。

目录(右下):每次上机都要摆弄的地方,也是一个让你找到位置和自信的地方。原因有二:1、不知道怎么设置Home的打开位置,每次打开RStudio都会去到一个神奇的地方,所以需要在这里找作一番;2、编辑好的.R文件及其他成果都会在这里找到,看着它们就看到你成长的步伐--真有点小激动。


2)R文件类型简介



R文件可能有很多分类方法,在这里小白我只按文件后辍(.Rproj、.Rhistory、.RData、.R)分四类。.Rproj个人理解它是一个项目的目录文件,有什么用暂时还不是很明确;.Rhistory文如其名,记录着所有你在这个项目敲过的代码或者是执过的代码。我们可能通过Ctrl+L把控制台清屏,也可以直接删代码编辑的内容,但除了把整个.Rhistory删了,好你没有别的办法修改它里面的内容;.RData很好玩,Environment中的内容都保存在这里。加载它,你可以省很多事,不信你试试;.R就是你的心血成果,你在代码编辑器中敲下的每一个字都保存在这里。


三、我遇到的问题

问题一:为什么attach()下的数据类型转换是没有效的?time已经变成“Date"但excelDate$time还是”character“。有图真像



为了省敲几个"excleDate"却浪费了我几天,坑啊!

问题二:RStudio的home怎么改啊?

问题三:像is\as\na那样后面加个.就是一类函数的东西大名应该叫什么啊?

也许你曾遇到这样的问题,也许你已经有答案,可以给我点线索嘛?最后不管你有没有答案、线索、搜索关键词,都谢谢你读到这里。


系列文章:

R下“Hello World级”数据分析--数据探索之旅


kaolixin,天善智能社区专家。

Blog:https://ask.hellobi.com/blog/kaolixin


优质线下活动推荐:

阅读原文即可报名

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存