R语言 数据处理 dplyr包 数据清理

dplyr包

这个包是Hadley Wickham创建和维护的。它包括了(几乎)全部可以用来加快数据处理进程的内容。它最有名的是数据探索和数据转换功能。它的链式语法让它使用起来很方便。它包括5个主要的数据处理指令:

1. 过滤——集于某一条件过滤数据

2. 选择——选出数据集中感兴趣的列

3. 排列——升序或降序排列数据集中的某一个值域

4. 变换——从已有变量生成新的变量

5. 概括(通过group_by)——提供常用的操作分析,如最小值、最大值、均值等

只需要关注这些指令便可以完成很好的数据探索工作。让我们一起逐一了解一下这些指令。我用到了两个R中内置的数据集mtcars和iris.

 

library(dplyr)

library(R6)

data(mtcars)

data(iris)

mydata<-mtcars

head(mydata)

                  mpg cyl disp  hp drat    wt  qsec vs am gear carb

Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4

Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4

Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1

Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1

Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2

Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

 

mynewdata<-tbl_df(mydata)

myirisdata<-tbl_df(iris)

Mynewdata

Source: local data frame [32 x 11]

 

     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb

   (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)

1   21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4

2   21.0     6 160.0   110  3.90 2.875 17.02     0     1     4     4

3   22.8     4 108.0    93  3.85 2.320 18.61     1     1     4     1

4   21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1

5   18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2

6   18.1     6 225.0   105  2.76 3.460 20.22     1     0     3     1

7   14.3     8 360.0   245  3.21 3.570 15.84     0     0     3     4

8   24.4     4 146.7    62  3.69 3.190 20.00     1     0     4     2

9   22.8     4 140.8    95  3.92 3.150 22.90     1     0     4     2

10  19.2     6 167.6   123  3.92 3.440 18.30     1     0     4     4

..   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...

 

Myirisdata

Source: local data frame [150 x 5]

 

   Sepal.Length Sepal.Width Petal.Length Petal.Width Species

          (dbl)       (dbl)        (dbl)       (dbl)  (fctr)

1           5.1         3.5          1.4         0.2  setosa

2           4.9         3.0          1.4         0.2  setosa

3           4.7         3.2          1.3         0.2  setosa

4           4.6         3.1          1.5         0.2  setosa

5           5.0         3.6          1.4         0.2  setosa

6           5.4         3.9          1.7         0.4  setosa

7           4.6         3.4          1.4         0.3  setosa

8           5.0         3.4          1.5         0.2  setosa

9           4.4         2.9          1.4         0.2  setosa

10          4.9         3.1          1.5         0.1  setosa

..          ...         ...          ...         ...     ...

 

#使用过滤器来过滤数据所需的条件

library(lazyeval)

filter(mynewdata,cyl>4 & gear>4)

Source: local data frame [3 x 11]

 

    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb

  (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)

1  15.8     8   351   264  4.22  3.17  14.5     0     1     5     4

2  19.7     6   145   175  3.62  2.77  15.5     0     1     5     6

3  15.0     8   301   335  3.54  3.57  14.6     0     1     5     8

 

filter(mynewdata,cyl>4)

Source: local data frame [21 x 11]

 

     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb

   (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)

1   21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4

2   21.0     6 160.0   110  3.90 2.875 17.02     0     1     4     4

3   21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1

4   18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2

5   18.1     6 225.0   105  2.76 3.460 20.22     1     0     3     1

6   14.3     8 360.0   245  3.21 3.570 15.84     0     0     3     4

7   19.2     6 167.6   123  3.92 3.440 18.30     1     0     4     4

8   17.8     6 167.6   123  3.92 3.440 18.90     1     0     4     4

9   16.4     8 275.8   180  3.07 4.070 17.40     0     0     3     3

10  17.3     8 275.8   180  3.07 3.730 17.60     0     0     3     3

..   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...

 

filter(myirisdata,Species %in% c("setosa","virginica"))

Source: local data frame [100 x 5]

 

   Sepal.Length Sepal.Width Petal.Length Petal.Width Species

          (dbl)       (dbl)        (dbl)       (dbl)  (fctr)

1           5.1         3.5          1.4         0.2  setosa

2           4.9         3.0          1.4         0.2  setosa

3           4.7         3.2          1.3         0.2  setosa

4           4.6         3.1          1.5         0.2  setosa

5           5.0         3.6          1.4         0.2  setosa

6           5.4         3.9          1.7         0.4  setosa

7           4.6         3.4          1.4         0.3  setosa

8           5.0         3.4          1.5         0.2  setosa

9           4.4         2.9          1.4         0.2  setosa

10          4.9         3.1          1.5         0.1  setosa

..          ...         ...          ...         ...     ...

 

#使用选择选择列的名字

select(mynewdata,cyl,mpg,hp)

Source: local data frame [32 x 3]

 

     cyl   mpg    hp

   (dbl) (dbl) (dbl)

1      6  21.0   110

2      6  21.0   110

3      4  22.8    93

4      6  21.4   110

5      8  18.7   175

6      6  18.1   105

7      8  14.3   245

8      4  24.4    62

9      4  22.8    95

10     6  19.2   123

..   ...   ...   ...

#使用-隐藏列

select(mynewdata,-cyl,-mpg)

select(mynewdata,-c(hp,mpg))

Source: local data frame [32 x 9]

 

     cyl  disp  drat    wt  qsec    vs    am  gear  carb

   (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)

1      6 160.0  3.90 2.620 16.46     0     1     4     4

2      6 160.0  3.90 2.875 17.02     0     1     4     4

3      4 108.0  3.85 2.320 18.61     1     1     4     1

4      6 258.0  3.08 3.215 19.44     1     0     3     1

5      8 360.0  3.15 3.440 17.02     0     0     3     2

6      6 225.0  2.76 3.460 20.22     1     0     3     1

7      8 360.0  3.21 3.570 15.84     0     0     3     4

8      4 146.7  3.69 3.190 20.00     1     0     4     2

9      4 140.8  3.92 3.150 22.90     1     0     4     2

10     6 167.6  3.92 3.440 18.30     1     0     4     4

..   ...   ...   ...   ...   ...   ...   ...   ...   ...

 

#选择一系列列

select(mynewdata,cyl:gear)

Source: local data frame [32 x 9]

 

     cyl  disp    hp  drat    wt  qsec    vs    am  gear

   (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)

1      6 160.0   110  3.90 2.620 16.46     0     1     4

2      6 160.0   110  3.90 2.875 17.02     0     1     4

3      4 108.0    93  3.85 2.320 18.61     1     1     4

4      6 258.0   110  3.08 3.215 19.44     1     0     3

5      8 360.0   175  3.15 3.440 17.02     0     0     3

6      6 225.0   105  2.76 3.460 20.22     1     0     3

7      8 360.0   245  3.21 3.570 15.84     0     0     3

8      4 146.7    62  3.69 3.190 20.00     1     0     4

9      4 140.8    95  3.92 3.150 22.90     1     0     4

10     6 167.6   123  3.92 3.440 18.30     1     0     4

..   ...   ...   ...   ...   ...   ...   ...   ...   ...

 

#链接或流水线——执行multile操作方式

 

mynewdata %>%

   select(cyl,wt,gear)%>%

   filter(wt >2)

Source: local data frame [28 x 3]

 

     cyl    wt  gear

   (dbl) (dbl) (dbl)

1      6 2.620     4

2      6 2.875     4

3      4 2.320     4

4      6 3.215     3

5      8 3.440     3

6      6 3.460     3

7      8 3.570     3

8      4 3.190     4

9      4 3.150     4

10     6 3.440     4

..   ...   ...   ...

 

#安排可以用来重新排序行

mynewdata %>%

   select(cyl,wt,gear)%>%

 arrange(wt)

Source: local data frame [32 x 3]

 

     cyl    wt  gear

   (dbl) (dbl) (dbl)

1      4 1.513     5

2      4 1.615     4

3      4 1.835     4

4      4 1.935     4

5      4 2.140     5

6      4 2.200     4

7      4 2.320     4

8      4 2.465     3

9      6 2.620     4

10     6 2.770     5

..   ...   ...   ...

 

#创造新的列

mynewdata %>%

  select(mpg,cyl)%>%

  mutate(newvariable=mpg*cyl)

Source: local data frame [32 x 3]

 

     mpg   cyl newvariable

   (dbl) (dbl)       (dbl)

1   21.0     6       126.0

2   21.0     6       126.0

3   22.8     4        91.2

4   21.4     6       128.4

5   18.7     8       149.6

6   18.1     6       108.6

7   14.3     8       114.4

8   24.4     4        97.6

9   22.8     4        91.2

10  19.2     6       115.2

..   ...   ...         ...

 

#这是用于查找数据的见解

#你可以使用重命名命令重命名变量

mynewdata %>% rename(miles=mpg)

Source: local data frame [32 x 11]

 

   miles   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb

   (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)

1   21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4

2   21.0     6 160.0   110  3.90 2.875 17.02     0     1     4     4

3   22.8     4 108.0    93  3.85 2.320 18.61     1     1     4     1

4   21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1

5   18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2

6   18.1     6 225.0   105  2.76 3.460 20.22     1     0     3     1

7   14.3     8 360.0   245  3.21 3.570 15.84     0     0     3     4

8   24.4     4 146.7    62  3.69 3.190 20.00     1     0     4     2

9   22.8     4 140.8    95  3.92 3.150 22.90     1     0     4     2

10  19.2     6 167.6   123  3.92 3.440 18.30     1     0     4     4

..   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...   ...

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值