安装
命令是install.packages/BioManager::install,使用哪个取决于需要安装的包在CRAN网站还是Biocductor
安装完成后需要使用library或者require加载,之后才能使用。
dplyr
是R中专门用于数据处理的包。具体功能包括:
- select() 从数据中选择列
- filter() 数据行的子集
- group_by() 汇总数据
- summarise() 汇总数据(计算汇总统计信息)
- arrange() 排序数据
- mutate() 创建新变量
两个实用技能
1. 管道操作 %>% (ctrl + shift + M)
加载任意一个tidyverse包即可用管道符
test %>% group_by(Species) %>% summarise(mean(Sepal.Length),sd(Sepal.Length))
2. count统计某列的unique值
1. mutate()
新增列。使用方式:
mutate(test,new = Sepal.Length * Spepal.Width)
先使用内置的iris数据来看看 ,由于直接打印有点乱这里将其转化为.tibble 其有点是将数据框以更好的格式打印出来。
> test1 <- as_tibble(test)
> print(test1)
# A tibble: 6 × 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 7 3.2 4.7 1.4 versicolor
4 6.4 3.2 4.5 1.5 versicolor
5 6.3 3.3 6 2.5 virginica
6 5.8 2.7 5.1 1.9 virginica
>
然后我们使用mutate()函数给这个表的最后加上一列:
test1 <- mutate(test1,new = Sepal.Length * Sepal.Width)
> print(test1)
# A tibble: 6 × 6
Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
<dbl> <dbl> <dbl> <dbl> <fct> <dbl>
1 5.1 3.5 1.4 0.2 setosa 17.8
2 4.9 3 1.4 0.2 setosa 14.7
3 7 3.2 4.7 1.4 versicolor 22.4
4 6.4 3.2 4.5 1.5 versicolor 20.5
5 6.3 3.3 6 2.5 virginica 20.8
6 5.8 2.7 5.1 1.9 virginica 15.7
>
2.select()
按列筛选 基本语法:
- 按列号筛选
select(test, 1) - 按列名
select(test, Petal.Length, Petal.Width)
3. filter()
筛选行
filter(test, Species == "setosa")
filter(test,Species == "setosa"&Spetal.Length > 5)
4. arrange()
按某列或某几列对整个表格进行排序
arrange(test, Sepal.Length) 默认从小到大
arrange(test, dec(Sepal.Length)) 从大到小
5. summarise()
汇总,可以结合group_by 更强大
summarise(test, mean(Sepal.Length), sd(Sepal.Length))# 计算Sepal.Length的平均值和标准差
## mean(Sepal.Length) sd(Sepal.Length)
## 1 5.916667 0.8084965
# 先按照Species分组,计算每组Sepal.Length的平均值和标准差
group_by(test, Species)
## # A tibble: 6 x 5
## # Groups: Species [3]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## * <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 7 3.2 4.7 1.4 versicolor
## 4 6.4 3.2 4.5 1.5 versicolor
## 5 6.3 3.3 6 2.5 virginica
## 6 5.8 2.7 5.1 1.9 virginica
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
## # A tibble: 3 x 3
## Species `mean(Sepal.Length)` `sd(Sepal.Length)`
##
## 1 setosa 5 0.141
## 2 versicolor 6.7 0.424
## 3 virginica 6.05 0.354
dplyr处理关系数据
data.frame(x = c(),y=())
上代码会将两个向量以列的形式合并
test1 <- data.frame(x = c('b','e','f','x'),
z = c("A","B","C",'D'))
test1
## x z
## 1 b A
## 2 e B
## 3 f C
## 4 x D
test2 <- data.frame(x = c('a','b','c','d','e','f'),
y = c(1,2,3,4,5,6))
test2
## x y
## 1 a 1
## 2 b 2
## 3 c 3
## 4 d 4
## 5 e 5
## 6 f 6
1. inner_join 取交集
2. left_join 左连
left_join(test1, test2, by = 'x')
## x z y
## 1 b A 2
## 2 e B 5
## 3 f C 6
## 4 x D NA
left_join(test2, test1, by = 'x')
## x y z
## 1 a 1
## 2 b 2 A
## 3 c 3
## 4 d 4
## 5 e 5 B
## 6 f 6 C
以上代码的是指将 test1 数据框与 test2 数据框按照列 ‘x’ 进行连接。左连接会保留左边数据框(test1)的所有行,并将右边数据框(test2)中与左边数据框匹配的行进行连接。如果没有匹配的行,那么连接后的结果会用 NA 填充
- x’ 列中的 ‘b’ 和 ‘e’ 在 test1 中都有,所以它们在连接后的结果中保留了下来。
- ‘f’ 列中的 ‘f’ 在 test1 中有,但在 test2 中没有匹配,所以 ‘f’ 对应的 ‘z’ 和 ‘y’ 列都是 NA。
- ‘x’ 列中的 ‘x’ 在 test1 中有,但在 test2 中没有匹配,所以 ‘x’ 对应的 ‘z’ 和 ‘y’ 列都是 NA。
3. 全连 full_join
将 test1 数据框与 test2 数据框按照列 ‘x’ 进行连接。全连接会保留两个数据框中的所有行,并将匹配的行进行连接。如果没有匹配的行,连接后的结果会用 NA 填充。
4. semi_join半连接 返回能够与y表匹配的x表所有记录
semi_join(x = test1, y = test2, by = 'x')
## x z
## 1 b A
## 2 e B
## 3 f C
5. anti_join 返回无法匹配的x表的所有记录
6. 简单合并
相当于base包里的cbind()和rbind(),bind_rows()函数需要两个表格列数相同,而bind_cols()函数则需要两个数据框有相同的行数。
本文介绍了如何在R语言中使用dplyr包进行数据安装、管理和操作,包括安装包、加载库、数据处理函数如select、filter、group_by、summarise、arrange和mutate,以及数据框连接方法如inner_join、left_join、full_join、semi_join和数据合并技巧。

3万+

被折叠的 条评论
为什么被折叠?



