作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。
邮箱:huang.tian-yuan@qq.com
前言
本章节介绍如何根据条件对表格进行过滤,主要使用filter函数进行实现。
首先加载需要的包和数据,我们会用到R语言自带的mtcars数据集。首先我们把行的名称转化为一列数据,名为rownams。然后,把数据库转化为tibble格式,存在mtcars1变量中。
1library(tidyverse) 2 3mtcars %>% 4 rownames_to_column() %>% 5 as_tibble() -> mtcars1 6 7mtcars1 8## # A tibble: 32 x 12 9## rowname mpg cyl disp hp drat wt qsec vs am gear10## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>11## 1 Mazda ~ 21 6 160 110 3.9 2.62 16.5 0 1 412## 2 Mazda ~ 21 6 160 110 3.9 2.88 17.0 0 1 413## 3 Datsun~ 22.8 4 108 93 3.85 2.32 18.6 1 1 414## 4 Hornet~ 21.4 6 258 110 3.08 3.22 19.4 1 0 315## 5 Hornet~ 18.7 8 360 175 3.15 3.44 17.0 0 0 316## 6 Valiant 18.1 6 225 105 2.76 3.46 20.2 1 0 317## 7 Duster~ 14.3 8 360 245 3.21 3.57 15.8 0 0 318## 8 Merc 2~ 24.4 4 147. 62 3.69 3.19 20 1 0 419## 9 Merc 2~ 22.8 4 141. 95 3.92 3.15 22.9 1 0 420## 10 Merc 2~ 19.2 6 168. 123 3.92 3.44 18.3 1 0 421## # ... with 22 more rows, and 1 more variable: carb <dbl>
条件过滤:filter
实际工作中,经常会需要用到把一定条件的记录调出来的情况。比如,如果我是超市的数据分析师,我需要查看单次消费超过500元的购物清单,就需要用到条件过滤。在我们的例子中,比如我们需要提取cyl为4的记录(cyl代表汽车气缸的数量),就可以这么操作:
1mtcars1 %>% 2 filter(cyl == 4) 3## # A tibble: 11 x 12 4## rowname mpg cyl disp hp drat wt qsec vs am gear 5## 6## 1 Datsun~ 22.8 4 108 93 3.85 2.32 18.6 1 1 4 7## 2 Merc 2~ 24.4 4 147. 62 3.69 3.19 20 1 0 4 8## 3 Merc 2~ 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 9## 4 Fiat 1~ 32.4 4 78.7 66 4.08 2.2 19.5 1 1 410## 5 Honda ~ 30.4 4 75.7 52 4.93 1.62 18.5 1 1 411## 6 Toyota~ 33.9 4 71.1 65 4.22 1.84 19.9 1 1 412## 7 Toyota~ 21.5 4 120. 97 3.7 2.46 20.0 1 0 313## 8 Fiat X~ 27.3 4 79 66 4.08 1.94 18.9 1 1 414## 9 Porsch~ 26 4 120. 91 4.43 2.14 16.7 0 1 515## 10 Lotus ~ 30.4 4 95.1 113 3.77 1.51 16.9 1 1 516## 11 Volvo ~ 21.4 4