R package——dplyr(一)

作者: iShareOne | 来源:发表于2016-11-30 22:45 被阅读86次

    dplyr作为我在日常学习生活中最常用到的包之一,是数据分析必备佳器。
    同时又由于其各个语法之间使用时的类似度较高,使用极为方便,因而比较受欢迎。
    首先我们先了解一下它的作者,著名的Hadley Wickham,其作品包含强大的EDA工具包ggplot2,重命名工具包reshape2等……

    OS:一个“等”字,多少辛苦,多少汗水……

    通过数据从根本上了解世界真的是一件非常,非常酷的事情。—— Hadley Wickham

    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年近在咫尺,那些吹过的牛逼实现了么,那些喜欢的人追到了么?那些好朋友还有联系么?说声珍重,好好爱惜身边人。**

    相关文章

      网友评论

        本文标题:R package——dplyr(一)

        本文链接:https://www.haomeiwen.com/subject/ituzpttx.html