• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言:以多列标准筛选特定行

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:村长,数据科学、指弹吉他及录音工程爱好者,浙大金融学博士在读,在data.table包和MongoDB的使用上有较多经验。

在前面

本期我们大猫二人组的村长在新的一年首先回归,为大家带来新的推送。

在本期,我们会运用一个病例数据为大家进行讲解示范,这也是大猫课堂第一次针对阅读者提问进行的反馈,也希望大家能提供一些有趣的问题,来和我们一起分享,同时也感谢读者孤鹜惜秋,与我们分享其问题。话不多说,马上进入正题。

题提出

在data.table语句中,i是用来进行行选择的重要组成部分,很多情况下我们都需要以很多列的同一个特殊值进行行的选择,大多数情况下,我们可能会针对所有的变量逐一写出条件,例如a==1&b==1&c==1....但这样的表达式很多时候并不方便和简洁,有时甚至会出现许多问题。首先来看看下面这个数据:

这是一个病例数据,包含多个患者的诊断的时间,以及多个诊断的结果,在这里读者便提出,需要在所有这些诊断结果里面筛选出所有出现过醛固酮,但不包括继发性醛固酮的所有行。在这里如果对每一个条件进行输入,需要输入20多个变量的判定,而且这里的变量名非常的脏,不利于变量名的输入。我们先把这一行代码优雅的放上来(PS:在运行这一行代码前我们已经对数据进行了适当清洗,批量生成了22个带'_xtrct'后缀的变量,观察值是醛固酮、继发性醛固酮或者无,但这部分批量生成的代码不作为这次讲解的内容, 会在以后的公众号推送中为大家讲解):

clinic <- clinic[rowMeans(clinic[, 31:52] == "醛固酮") > 0 & rowMeans(clinic[, 31:52] != "继发性醛固酮") == 1]

我们再来看看结果:

结果非常出色,不过大家看到这一段语句是不是有点懵,不用着急,待小编慢慢讲解。

码解读

里层代码

我们先从最里面的一层代码开始, 首先来看下面一段代码的运行结果:

clinic[, 31:52] == "醛固酮"

从运行结果可以看出这是一个logic结果判定矩阵,里面主要判定这个矩阵里面是否是醛固酮, 如果是返回TRUE,如果不是返回FALSE,同理于代码:

clinic[, 31:52] != "继发性醛固酮"

判定是否观察值里面是否是继发性醛固酮,如果不是返回TRUE,如果是返回FALSE。

外层代码

下面来看外层代码:

rowMeans(clinic[, 31:52] == "醛固酮") > 0

这里运用了R语言中非常关键的一个知识点:对逻辑判断值进行四则运算时,TRUE会被当做1,FALSE会被当做0, 这一点在这里非常重要!!!!

那么在这里求每一行的均值,只要出现了醛固酮,那就会至少出现一个TRUE,那么行的均值就肯定大于零,所以就将出现了醛固酮的行全都标记出来了,同理可得下面这行代码:

rowMeans(clinic[, 31:52] != "继发性醛固酮") == 1

标记出了所有没有出现继发性醛固酮的行。

这样我们把这两个条件合并在一起,然后配套上data.table的语句,就成了我们一开始出现的那条代码:

clinic <- clinic[rowMeans(clinic[, 31:52] == "醛固酮") > 0 & rowMeans(clinic[, 31:52] != "继发性醛固酮") == 1]

在结尾

应用好对象格式是R语言编程中的精髓之一,在这个例子中就很好的利用了对象格式里面的格式性质,做了一些适当的变通处理,让数据处理过程变得更加巧妙和方便,这点大家可以在以后的数据处理中做更多的尝试和思考!

期预告

下一期我们将讲述在这一次数据处理中遇到的另外一个问题,问题的内容已经在前文中说明。祝大家开工大吉!

转载自公众号:大猫的R语言课堂

往期精彩:

  还在用tm?你OUT啦!

从一件数据清洗的小事说起

用data.table语句批量处理变量

关于data.table中i,&nbsp;j,&nbsp;by都为数字的理解

R语言:哪个函数解析时间最快?

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战

回复 Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘

回复 人工智能     三个月入门人工智能

回复 数据分析师  数据分析师成长之路 

回复 机器学习     机器学习的商业应用

回复 数据科学     数据科学实战

回复 常用算法     常用数据挖掘算法


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言X轴为日期时使用scale_x_date发布时间:2022-07-18
下一篇:
[R语言学习笔记] - Rstudio更变console的显示信息至英文发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap