数据框是R语言中的一个重要数据结构,在数据分析过程中,主要的数据对象就是数据框。R语言内置了data.frame类,dplyr包则加强了数据框的各种操作,语法与SQL类似,使数据框的处理变得灵活多变,处理速度得到很大提升。
本文针对在数据分析中数据框使用的各种常用场景,总结了dplyr包的使用方法。本文为该系列的第一篇。
环境&软件
- win10 64bit
- R 3.6.1
安装包
install.packages("dplyr")
管道操作符 %>%
管道操作符%>%
,在dplyr中被大量使用,用来简化代码结构,减少中间变量,使代码更符合思维习惯。RStudio快捷键:Ctrl+Shift+m
。
library(dplyr)
# 查看数据前3行
head(iris,3) # 常规方式
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3.0 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## Species
## 1 setosa
## 2 setosa
## 3 setosa
iris %>% head(3) # 管道符方式
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5.1 3.5 1.4 0.2
## 2 4.9 3.0 1.4 0.2
## 3 4.7 3.2 1.3 0.2
## Species
## 1 setosa
## 2 setosa
## 3 setosa
数据框 tibble
tibble
是data.frame的简化版本,适用data.frame的所有语法,同时有更简单的数据框创建方式。
# 1.data.frame转为tibble
as_tibble(mtcars)
## # A tibble: 32 x 11
## mpg cyl disp hp drat wt qsec vs am
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 21 6 160 110 3.9 2.62 16.5 0 1
## 2 21 6 160 110 3.9 2.88 17.0 0 1
## 3 22.8 4 108 93 3.85 2.32 18.6 1 1
## 4 21.4 6 258 110 3.08 3.22 19.4 1 0
## 5 18.7 8 360 175 3.15 3.44 17.0 0 0
## 6 18.1 6 225 105 2.76 3.46 20.2 1 0
## 7 14.3 8 360 245 3.21 3.57 15.8 0 0
## 8 24.4 4 147. 62 3.69 3.19 20 1 0
## 9 22.8 4 141. 95 3.92 3.15 22.9 1 0
## 10 19.2 6 168. 123 3.92 3.44 18.3 1 0
## # … with 22 more rows, and 2 more variables:
## # gear <dbl>, carb <dbl>
# 2.构造tibble,引用列变量
tibble(x=1:4,y=x+1)
## # A tibble: 4 x 2
## x y
## <int> <dbl>
## 1 1 2
## 2 2 3
## 3 3 4
## 4 4 5
# 3.构造tibble,不引用列变量(!!)
x <- 11:14
tibble(x=1:4,y=!!x+1)
## # A tibble: 4 x 2
## x y
## <int> <dbl>
## 1 1 12
## 2 2 13
## 3 3 14
## 4 4 15
列筛选 select
select
函数用来对数据框的列进行选择筛选。
# 数据
tbl_df <- tibble(var1=1:4,var2=2:5,label=c("a","b","a","c"))
基本方法
选择列的基本方法。
# 引用选择列
tbl_df %>% select(var1,var2)
## # A tibble: 4 x 2
## var1 var2
## <int> <int>
## 1 1 2
## 2 2 3
## 3 3 4
## 4 4 5
# 范围引用选择列
tbl_df %>% select(var1:var2)
## # A tibble: 4 x 2
## var1 var2
## <int> <int>
## 1 1 2
## 2 2 3
## 3 3 4
## 4 4 5
# 列位置选择列
tbl_df %>% select(1,2)
## # A tibble: 4 x 2
## var1 var2
## <int> <int>
## 1 1 2
## 2 2 3
## 3 3 4
## 4 4 5