R学习笔记系列—R语言从数据集中筛选需要的数据
1.5 筛选数据
在前面的教程中,我们已经简单地介绍过如何访问数据集中的数据,比如通过下标或者变量名访问数据集。这里,我们再将如何从数据集中筛选数据的技巧集中起来学习一下加深记忆。
1.5.1 通过下标选取数据
通过下标选取相应的数据,是最简单传统的方式。下标以 [] 包裹起来,分为行下标和列下标,行下标在前,列下标在后,用逗号隔开。若没有逗号,则默认为列下标。 下标一般为正数,表明选取相应的行或列;若为负数,则移除指定的行或列。
首先来看选取行(或者观测、示例或者记录均可)的示例。
然后,选择相应的列。可以在列下标签加逗号,也可以不加。因为下表只有一个数据,没有逗号的话默认为列下标。
最常用的是行下标和列下标结合使用。
1.5.2 通过逻辑表达式选取数据
除直接指定下标外,也可以通过逻辑表达式选取数据。同样,行选取逻辑表达式在前,列在后,中间用逗号隔开。若不加逗号,默认为列选取逻辑表达式。逻辑表达式的核心是若结果为 TRUE, 则选取相应数据,若结果为 FALSE,则不选取相应数据。
注意,上述下标中的变量要用全称,即 trees$Height 这样的形式,若嫌麻烦,建议使用 with() 或者 within() 函数,当然也可以用 attach() 和 detach() 函数,但建议使用前两者。也可以通过这种方式剔除相应的列。
1.5.3 通过 subset() 函数选取数据
还可以使用 subset() 函数选取数据。其调用格式为:
参数含义分别是:
x: 需要从中选取数据的对象,可以是矩阵或数据框。
subset: 逻辑表达式,用于计算是否选取相应的行,若计算结果为 TRUE ,则选取行;若为 FALSE,则不选取行。
select : 字符型向量或者列表达式,用于指定要选取的列
典型的用法如下:
注意 subset 函数中列名不用引号。还可以用 : 运算符返回某一范围内的列:
1.5.4 使用 SQL
如果熟悉 SQL 语言,是不是感觉 subset() 函数和 sql 语句很类似啊,subset 相当于 where,select 相当于 select。那么能不能直接用 SQL 语句来选取数据呢?这样已经学过 SQL 语句的就可以直接使用现成的经验了。答案是有,这就要感谢 R 强大的包机制了,有各种各样的拓展。用于支持 SQL 语句访问数据的包是 sqldf 包。
安装加载后,我们就可以使用 sqldf() 函数来访问数据了。实现和上面 subset 同样效果的语句如下:
> sqldf("select mpg,cyl,wt from mtcars where mpg > 20 and cyl > 4") mpg cyl wt1 21.0 6 2.6202 21.0 6 2.8753 21.4 6 3.215
喜欢闲适安静的生活,懂一点计算机编程,懂一点统计学和数据分析。(爱编程爱统计)