R语言从入门到精通:Day6

2019-09-24 17:01:53 浏览数 (1)

是时候

关注

我们一波了

他来了,他来了,他带着教程走来了~

距离上次R语言系列更新已经过去快一周了,先跟大家说声不好意思,实话实说更新速度的确慢了一点

跟大家解释一下:所有写文章的老师都是我们的一线数据分析师,每日忙于各位学员的data mining case和SCI paper,总是在编辑小姐姐的无数次催促下才能写出教程,更新确实有点慢。不过请大家放心,我们的R语言系列会一直更到底,而且也会提高更新速度哒。

最近经过前面几次推文的学习,我们的R语言教程已经讲解了快1/3的内容,相信大家对R语言已经有了初步的了解,特别是感受了R语言在数据处理领域的强大功能。数据处理是R语言和数据挖掘的重要基础,要求大家务必熟练操作,所以今天我们就从一个简单的实例出发,给大家继续讲解数据处理进阶及控制结构

温馨提示

1、本节内容重点内容较多,

务必紧跟红色标记。

2、测试数据及代码

见文末客服小姐姐二维码。

先看看我们的数据实例:

一组学生参加了一次会考,要求根据学生的所有科目成绩对学生进行排名,将前20%的学生评定为A,接下来20%的学生评定为B,依此类推,最后将学生按姓名字母顺序排序。数据如下:

考试排名对大家一定不是一件陌生的事情,可是这次的排名却有点不一样,因为这三个科目的分值的均值和方差相差太大,如果直接比较总分就太便宜数学好的同学了吧!所以我们要找到将三个科目的分值转化为可比较的单元,然后将学生按成绩排名分类(相信大家还记得前几次教程里面的变量的重编码),最后按照姓名排序,这样就完美的解决了这个难题。本次教程就能帮助大家做到上面说的这些步骤,从简单实例出发,举一反三,初探数据挖掘实例

1、数值和字符的处理函数

R中数据处理的基础函数可以分为数值(数学、统计、概率)函数和字符处理函数,下面分别介绍一下这些函数:

1. 数学函数(掌握)

下面给大家列出了常用的数学函数。

数据处理中数学函数是不可或缺的,上面这些函数也是最常见和常用的一部分函数。它们不仅可以对单个标量使用,也可以作用于向量、矩阵、数据框等,这时函数会分别作用于每个独立的值。这里就不一一举例示范函数的使用了,大家不妨自己动手试一试。

2. 统计函数(掌握)

下面给大家列出常见的统计函数。

如果没有这些函数,我们要求一个数值向量的均值、方差和标准差该怎么办呢?如下图1.

图1:均值和标准差的两种实现

实际上我们还是借用了求和函数,就算如此,代码量也有所增加。上面这些简单而重要的统计函数将会伴随你使用R语言的全部旅程。

3. 概率函数(了解)

数学课上,概率和统计都是放在一起学习的,有一门课程就叫做概统,但是这里我们把概率函数和统计函数分开讲解。

R中,概率函数形如 :

[dpqr]distribution_abbreviation()

其中第一个字母表示其所指分布的某一方面:

d = 密度函数(density)

p = 分布函数(distribution function)

q = 分位数函数(quantile function)

r = 生成随机数(随机偏差)

上过概统课的同学一定不会对上面的数学术语陌生,如果你感到陌生,或许你应该把数学书拿出来复习一下了。

下面是一些常用的概率函数:

下面是正态分布的d、p、q、r四个函数的举例。

图2:正态分布示例

图3:图2代码的结果

上面的例子中,函数pretty()帮我们生成了一个长度为30的范围在-3到3之间的等差数列x,然后用plot()画出了一张-3到3之间的正态分布曲线。函数pnorm()则给出了1.96 左侧的标准正态曲线下方面积,qnorm(0.5)说明标准正态分布的0.5分位点为0(很明显)。rnorm()给出五个符合标准正态分布的随机数。

正态分布的每个函数中都有mean和sd这两个参数,用于非标准正态分布的情形,大家可以查看帮助文档了解。

4. 字符处理函数(掌握)

前面的三类函数都是用于处理数值的,字符处理函数则是用于从文本型数据中抽取信息,或者为打印输出和生成报告重设文本的格式。下面是字符处理函数的一些例子:

表格中提到的正则表达式是一个非常强大的文本模式的匹配语法(学过perl或者python的同学不会陌生,正则表达式在生物信息、网络爬虫等方向的项目中都应用广泛,值得大家学习。后面我们也可以单独讲一下正则表达式的规则和用法)。关于R中的字符串处理,还有一个非常强大的R包,就是stringr包,大家可以自己装一下这个包,运行学习一下。

5. 其他实用函数(掌握)

除了上面提到的这几大类函数,还有一些灵活好用的函数值得一提。

如:seq()rep()、cut()、pretty()等等。在前面的学习过程中其实我们都已经用到了上面这些函数,下面是一些实际的例子。

图4:实用函数举例

当然,这样的函数很多,不可能在这里全部列出来,大家在运用R的时候遇到了很好用的函数也可以拿出来讨论一下。

6. 函数的应用(了解)

R的诸多特点之一,就是R的函数的使用很灵活,不仅可以应用在标量上,也可以照搬到向量、矩阵等高维数据类型。值得一提的是,R提供了apply()函数,可以将任意函数“应用”到任何维度的数据上去。下面是一个示例:

上面的例子中先生成一个6*5的正态随机数矩阵,然后分别对行、列求均值。函数apply()因为其灵活性,功能很强大并且应用广泛,与之类似的还有sapply()和lapply(),主要用于列表上。学习完了这么多函数,大家还记得最开始我们的问题吗,可以尝试解决一下,毕竟学了这么多,会用才是最终目的。需要解答参考代码的同学可以咨询客服小姐姐。

2.控制流

在下一次教程中,我们就要开始讨论R中的图形绘制了,在这之前,有必要给大家多讲讲R语言的函数部分,这里主要给大家介绍一下R语言中的条件语句和循环语句。

1. 重复和循环(掌握)

R语言中的循环主要有for和while两种结构,语法示例如下:

但是R语言中的循环语句效率不高,大型数据集中不太推荐这种用法。Tips: 大型数据集,记得用lapply, sapply, tpply这一类的高级迭代循环哦~

2. 条件执行(了解)

R语言中的条件控制主要有if-else、ifelse、switch三种结构,if-else结构就不举例了,下面是ifelse和switch的两个例子。

图7:条件语句示例

3. 自编函数(了解)

和所有的编程语言一样,用户也可以用R语言编写自定义的函数。其实,我们以后工作学习中用到的很多函数都是别人写好的函数,下面举一个最简单的例子:

图8:自编函数示例

到这里为止,我们介绍的内容已经可以帮助大家做很多基础工作了,下一阶段的内容会主要聚集于图形绘制,相信会给大家有更大的帮助。

小结

加上今天的文章,我们的《R语言从入门到精通》系列已经更新大概1/3的内容了,特别是关于数据操作的基础内容。后面我们会逐步讲解绘图、机器学习及更加高级、更加贴近实战的内容。再给大家鼓鼓气,继续坚持学习,精通R语言指日可待哦!

本期干货

·

!R语言数据操作进阶及控制结构 !

!示例代码 !

原文详情:“科研猫”公众号

0 人点赞