R 数据处理

本节函数都来自于dplyr包,都可以和group_by函数联合起来处理复杂的数据。

filter

filter()函数用来根据列的具体数据选择行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> library(dplyr)
> names(mpg)
"manufacturer" "model" "displ" "year" "cyl" "trans" "drv" "cty" "hwy" "fl" "class"
> filter(mpg,year==1999) #选择year==1999的数据
# A tibble: 117 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.80 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.80 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2.80 1999 6 auto(l5) f 16 26 p compact
> filter(mpg,year==1999,displ>5) #选择year==1999且displ>5的数据
# A tibble: 16 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 chevrolet c1500 suburban 2wd 5.70 1999 8 auto(l4) r 13 17 r suv
2 chevrolet corvette 5.70 1999 8 manual(m6) r 16 26 p 2seater
3 chevrolet corvette 5.70 1999 8 auto(l4) r 15 23 p 2seater
4 chevrolet k1500 tahoe 4wd 5.70 1999 8 auto(l4) 4 11 15 r suv
5 chevrolet k1500 tahoe 4wd 6.50 1999 8 auto(l4) 4 14 17 d suv

arrange

arrange()函数用来排列行的顺序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> arrange(mpg,year,cty, hwy)  #根据year,cty, hwy进行行排序
# A tibble: 234 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 chevrolet k1500 tahoe 4wd 5.70 1999 8 auto(l4) 4 11 15 r suv
2 dodge dakota pickup 4wd 5.20 1999 8 auto(l4) 4 11 15 r pickup
3 dodge durango 4wd 5.90 1999 8 auto(l4) 4 11 15 r suv
> arrange(mpg,year,cty, hwy) #根据year,cty, hwy进行行排序
> arrange(mpg,desc(year)) #根据year进行行降序排序
# A tibble: 234 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 2.00 2008 4 manual(m6) f 20 31 p compact
2 audi a4 2.00 2008 4 auto(av) f 21 30 p compact
3 audi a4 3.10 2008 6 auto(av) f 18 27 p compact
4 audi a4 quattro 2.00 2008 4 manual(m6) 4 20 28 p compact

select

select()函数用来选择列。

1
2
3
4
5
6
7
> select(mpg,year,cty, hwy)  #只显示year,cty, hwy三列
# A tibble: 234 x 3
year cty hwy
<int> <int> <int>
1 1999 18 29
2 1999 21 29
3 2008 20 31

select()函数的辅助函数:

  • start_with("abc") :匹配以 “abc” 开头的变量名。
  • ends_with("xyz") :以 “xyz” 结尾。
  • contains("ijk") :包含 “ijk”。
  • match("(.)\\\1") :正则匹配重复字符。
  • num_range("x",1:3) :匹配x1,x2和x3。

rename

rename()用来改变变量名。

1
> rename(mpg,YEAR=year)  #将year重命名YEAR

mutate

mutate()函数用来对数据进行增加新列。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> mutate(mpg,cty2=cty*2)  #数值型
# A tibble: 234 x 12
manufacturer model displ year cyl trans drv cty hwy fl class cty2
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr> <dbl>
1 audi a4 1.80 1999 4 auto(l5) f 18 29 p compact 36.
2 audi a4 1.80 1999 4 manual(m5) f 21 29 p compact 42.
3 audi a4 2.00 2008 4 manual(m6) f 20 31 p compact 40.
> mutate(mpg,cty2=paste(drv,cty,sep = "")) #字符型
# A tibble: 234 x 12
manufacturer model displ year cyl trans drv cty hwy fl class cty2
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr> <chr>
1 audi a4 1.80 1999 4 auto(l5) f 18 29 p compact f18
2 audi a4 1.80 1999 4 manual(m5) f 21 29 p compact f21
3 audi a4 2.00 2008 4 manual(m6) f 20 31 p compact f20