首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言笔记11:两个重要函数——用来分解数据框的split和用来查看对象的str

写在前面(~(^_^)~)清明小长假休息了三天,回来发现粉丝数破了200,感动嘤嘤嘤(含泪鞠躬感谢大家的关注)。公众号开了一个月,初衷就是分享一只实验狗转生信小白的学习笔记,每天学了啥就发点啥,回头看看真的很乱,有R,有ggplot2,有Linux,对不起大家T.T,有时间了我会把它们整理起来,方便一起学习。

内个,真的谢谢大家的支持还有小伙伴的留言and鼓励(文章虽然没有留言功能但是大家可以直接在后台发消息,我看到会回复的^^),希望大家多多提建议,希望我们可以一起坚持下去~~

----------- 我是正文分割线 -----------

不是一个循环函数,但它和还有等一起使用起来很方便。

的参数是一个向量,和类似,但是并不计算概括统计量。它所做的是接收一个向量或对象x,然后接收一个因子变量f,f用来指定分组的水平(level),x根据f进行分组,分组之后返回一个列表,我们就可以对这些独立的组使用或者了

举例,和前一节的类似,生成三组随机数,然后通过进行分组,

因子变量设置为3,将x向量分解成3组,可以得到以下这个列表,三个元素:

分组之后使用循环函数或者,求每个组中的统计值

结合起来用是这样的:

其实,在这个例子中我们大可不必使用,因为也可以达到完全一样的效果,而且会更加紧凑

最大的好处是它可以用于分解数据框

Splitting a Data Frame

以datasets数据集中的空气质量(airquality)数据集为例,可以看到数据集中包含臭氧、太阳辐射、风力、温度等测量值,以及月份、日期两个测量时间:

假如我们想计算臭氧、辐射、风力、温度等测量值在某个月份内的平均值,那就要先使用对数据进行分类:

首先将整个数据框按月分组,将f因子设置为离散型变量:

然后使用计算不同列的均值,其中使用匿名函数,计算三个变量的均值:

可以看到结果中对每个月份都返回了一个列表,列表中的每个元素是一个长度为3的向量,代表三个变量在这个月中的均值。

的缺点是以列表的形式返回的数据不够紧凑。因为每个向量长度都是3,我们可以通过函数,简化数据,返回一个三行五列的矩阵,如下:

其中一列数据为NA,这是因为原始数据中有很多NA缺失值,所以,结果也是NA。

怎么去除NA?

给函数传递一个参数,从而在每次计算平均值之前先移除每一列的缺失值:

Splitting on More than one Level

还可以用于基于多个水平的分解:

在前面的例子中,我们只有一个因子变量用于分组,如果我们有多个因子变量,比如性别、种族等,这些因子变量组合起来会产生多个水平,这时怎么办?

举例

创建一个数字向量x,包含10个随机数字,创建两个因子变量f1和f2,分别有2个和5个水平:

使用函数,把这两个变量组合起来,就生成了10个水平:

所以使用分解数值向量x:

PS. 我们也可以使用,直接把两个因子作为列表传递给因子变量f:

这时我们可以看到,不是每个水平上都有观测值,这是正常的情况,我们也可以设置不显示这些没有元素的分组,使用参数:

就这样分组完成后,可以使用其他循环函数再进行计算。

上面的结果中,我们用到了一个没见过的函数——,下面介绍一下它。

最重要的查看函数——str()

代表的是structure,用来查看对象内容,是一个简单的诊断函数,可用来替代

我们可以用它来查看大型列表,结构紧凑

我们也可以用它来查看函数功能,显示参数和概要

总之我们可以用查看各种对象。

例如,生成一组含有100个正态随机数字的向量,平均值为2,标准差为4,然后通过函数返回6个概括统计量,分别是最小值、第25百分位数、中位数、平均数、第75百分位数以及最大值,从中粗略的告诉你这个数列的范围以及离散情况:

使用函数,他会告诉你x是一个数值向量,含有100个数字

再例如,生成一个10*10的矩阵,用查看

参考资料:

视频课程 R Programming by Johns Hopkins University:https://www.coursera.org/learn/r-programming/home/welcome

讲义 Programming for Data Science :https://bookdown.org/rdpeng/rprogdatascience/R

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180409G1SG0U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券