dplyr作为我在日常学习生活中最常用到的包之一,是数据分析必备佳器。
同时又由于其各个语法之间使用时的类似度较高,使用极为方便,因而比较受欢迎。
首先我们先了解一下它的作者,著名的Hadley Wickham,其作品包含强大的EDA工具包ggplot2,重命名工具包reshape2等……
OS:一个“等”字,多少辛苦,多少汗水……
通过数据从根本上了解世界真的是一件非常,非常酷的事情。—— Hadley Wickham

今天是系列的第一部分,主要介绍5个相对较为基础的函数。
我们使用R自带数据集mtcars作为示例。
attach(mtcars)#绑定mtcars数据集```
head(mtcars) #查看数据集的前几行数据
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 441.00 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 441.00 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 519.84 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 457.96 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 349.69 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 327.61 6 225 105 2.76 3.460 20.22 1 0 3 1```
- 行过滤选取——filter
- 我们选取cyl为4的数据
filter(mtcars,cyl == 4)
mpg cyl disp hp drat wt qsec vs am gear carb
1 519.84 4 108.0 93 3.85 2.320 18.61 1 1 4 1
2 595.36 4 146.7 62 3.69 3.190 20.00 1 0 4 2
3 519.84 4 140.8 95 3.92 3.150 22.90 1 0 4 2
4 1049.76 4 78.7 66 4.08 2.200 19.47 1 1 4 1
5 924.16 4 75.7 52 4.93 1.615 18.52 1 1 4 2
- 我们选取cly为4且hp大于等于100的数据
filter(mtcars,cyl == 4 & hp >= 100)
mpg cyl disp hp drat wt qsec vs am gear carb
1 924.16 4 95.1 113 3.77 1.513 16.9 1 1 5 2
2 457.96 4 121.0 109 4.11 2.780 18.6 1 1 4 2```
有没有发现,它是那么的简单高效,选择数据集,设置过滤条件,然后就ok了~
- 列选取——select
- 我们选择mpg列到wt列
mpg cyl disp hp drat wt
Mazda RX4 441.00 6 160.0 110 3.90 2.620
Mazda RX4 Wag 441.00 6 160.0 110 3.90 2.875
Datsun 710 519.84 4 108.0 93 3.85 2.320
Hornet 4 Drive 457.96 6 258.0 110 3.08 3.215
Hornet Sportabout 349.69 8 360.0 175 3.15 3.440
Valiant 327.61 6 225.0 105 2.76 3.460
Duster 360 204.49 8 360.0 245 3.21 3.570```
- 如果我们只想去除某一列,就是看他不顺眼了,比如wt列
```select(mtcars,-wt)
mpg cyl disp hp drat qsec vs am gear carb
Mazda RX4 441.00 6 160.0 110 3.90 16.46 0 1 4 4
Mazda RX4 Wag 441.00 6 160.0 110 3.90 17.02 0 1 4 4
Datsun 710 519.84 4 108.0 93 3.85 18.61 1 1 4 1
Hornet 4 Drive 457.96 6 258.0 110 3.08 19.44 1 0 3 1
Hornet Sportabout 349.69 8 360.0 175 3.15 17.02 0 0 3 2
Valiant 327.61 6 225.0 105 2.76 20.22 1 0 3 1
Duster 360 204.49 8 360.0 245 3.21 15.84 0 0 3 4
Merc 240D 595.36 4 146.7 62 3.69 20.00 1 0 4 2
Merc 230 519.84 4 140.8 95 3.92 22.90 1 0 4 2```
**历史依旧是这么的偶然+必然,我们又一次感受到了它的简洁,选择数据集,选择需要的列,顺利拿下~**
- 排序——arrange
- 我这个人比较喜欢按照hp排序,但是排序也有两种,越来越大,越来越小,无所谓,不就是一个符号的事儿么?
arrange(mtcars,hp)
mpg cyl disp hp drat wt qsec vs am gear carb
1 924.16 4 75.7 52 4.93 1.615 18.52 1 1 4 2
2 595.36 4 146.7 62 3.69 3.190 20.00 1 0 4 2
3 1149.21 4 71.1 65 4.22 1.835 19.90 1 1 4 1
4 1049.76 4 78.7 66 4.08 2.200 19.47 1 1 4 1
5 745.29 4 79.0 66 4.08 1.935 18.90 1 1 4 1
那要降序呢?其实只需要一个减号(“-”),同样也可以使用desc(wt)这种写法。
```arrange(mtcars,-hp)
mpg cyl disp hp drat wt qsec vs am gear carb
1 225.00 8 301.0 335 3.54 3.570 14.60 0 1 5 8
2 249.64 8 351.0 264 4.22 3.170 14.50 0 1 5 4
3 204.49 8 360.0 245 3.21 3.570 15.84 0 0 3 4
4 176.89 8 350.0 245 3.73 3.840 15.41 0 0 3 4
5 216.09 8 440.0 230 3.23 5.345 17.42 0 0 3 4```
- 扩展——mutate
有时候我们需要将某个变量拆分(比如日期我们可以拆分成“年”、“月”、“日”三列变量,同样我们也可以合成一些变量(如销售额=单价\*销量等),这时候,我们便可以使用mutate进行处理。由于mtcars包内没有时间戳,所以不能做拆分,我们做如下示例:我们定义一个测试变量test1 = wt*hp,test2 = test1-50(没有任何意义,仅供测试)
mutate(mtcars,test1 = wt*hp,test2 = test1-50)
mpg cyl disp hp drat wt qsec vs am gear carb test1 test2
1 441.00 6 160.0 110 3.90 2.620 16.46 0 1 4 4 288.200 238.200
2 441.00 6 160.0 110 3.90 2.875 17.02 0 1 4 4 316.250 266.250
3 519.84 4 108.0 93 3.85 2.320 18.61 1 1 4 1 215.760 165.760
4 457.96 6 258.0 110 3.08 3.215 19.44 1 0 3 1 353.650 303.650
5 349.69 8 360.0 175 3.15 3.440 17.02 0 0 3 2 602.000 552.000```
- 汇总——summarise
汇总函数可谓是非常重要,我们常见的取最大值,最小值,平均值,方差等,我们该如何使用它呢,其实方法类似,不信我们接着瞧~- 我们想找到hp列的最大值,最小值,平均值,唯一值的数量。
summarise(mtcars,max = max(hp),min = min(hp),mean = mean(hp),n = n_distinct(hp))
max min mean n
1 335 52 146.6875 22```
**今天我们就写到这里,11月的最后一天,新的一个月又要开始了,2016年的最后一个月,不知道你会这样度过?
2017年近在咫尺,那些吹过的牛逼实现了么,那些喜欢的人追到了么?那些好朋友还有联系么?说声珍重,好好爱惜身边人。**
网友评论