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

R语言(以多列标准筛选特定行)
文章图片

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



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



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


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


clinic <- clinic[rowMeans(clinic[, 31:52] == "醛固酮") > 0 & rowMeans(clinic[, 31:52] != "继发性醛固酮") == 1]
我们再来看看结果:
R语言(以多列标准筛选特定行)
文章图片


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



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




clinic[, 31:52] == "醛固酮"
R语言(以多列标准筛选特定行)
文章图片


从运行结果可以看出这是一个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语言课堂



R语言(以多列标准筛选特定行)
文章图片

往期精彩:

  • 还在用tm?你OUT啦!
  • 从一件数据清洗的小事说起
  • 用data.table语句批量处理变量
  • 关于data.table中i,  j,  by都为数字的理解
  • R语言:哪个函数解析时间最快?


R语言(以多列标准筛选特定行)
文章图片


公众号后台回复关键字即可学习
回复 爬虫爬虫三大案例实战
回复 Python1小时破冰入门
回复 数据挖掘R语言入门及数据挖掘
回复 人工智能三个月入门人工智能
回复 数据分析师数据分析师成长之路
回复 机器学习机器学习的商业应用
回复 数据科学数据科学实战
回复 常用算法常用数据挖掘算法


给我【好看】
【R语言(以多列标准筛选特定行)】你也越好看!
R语言(以多列标准筛选特定行)
文章图片

    推荐阅读