安装和加载R包
1、镜像设置
代码语言:javascript复制options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
2、安装命令
代码语言:javascript复制install.packages(“ ”) # 为CRAN网站下载;双引号内为包名字
BiocManager::install(“ ”) #为Biocductor上下载
3、加载
代码语言:javascript复制library() #括号内为包名字
require()
利用dplyr包----学习五个基本函数
首先把前面所需代码写完
代码语言:javascript复制> options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
> options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
> install.packages(“dplyr”)
> library(dplyr)
> X= iris[c(1:3,20:22,70:71)] #使用内置数据来进行操作
1、mutate() #新增列
代码语言:javascript复制> mutate(X,new = Sepal.Length * Sepal.Width)
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
20 5.1 3.8 1.5 0.3
21 5.4 3.4 1.7 0.2
22 5.1 3.7 1.5 0.4
70 5.6 2.5 3.9 1.1
71 5.9 3.2 4.8 1.8
Species new
1 setosa 17.85
2 setosa 14.70
3 setosa 15.04
20 setosa 19.38
21 setosa 18.36
22 setosa 18.87
70 versicolor 14.00
71 versicolor 18.88
2、select() #按列筛选
- 利用列号
> select(X,1) #筛出第一列
Sepal.Length
1 5.1
2 4.9
3 4.7
20 5.1
21 5.4
22 5.1
70 5.6
71 5.9
> select(X,c(1,5)) #筛出第一列和第五列
Sepal.Length Species
1 5.1 setosa
2 4.9 setosa
3 4.7 setosa
20 5.1 setosa
21 5.4 setosa
22 5.1 setosa
70 5.6 versicolor
71 5.9 versicolor
- 按列名筛选
> select(X, Petal.Length, Petal.Width)
Petal.Length Petal.Width
1 1.4 0.2
2 1.4 0.2
3 1.3 0.2
20 1.5 0.3
21 1.7 0.2
22 1.5 0.4
70 3.9 1.1
71 4.8 1.8
> vars=c("Petal.Length", "Petal.Width")
> select(X, one_of(vars))
Petal.Length Petal.Width
1 1.4 0.2
2 1.4 0.2
3 1.3 0.2
20 1.5 0.3
21 1.7 0.2
22 1.5 0.4
70 3.9 1.1
71 4.8 1.8
2、filter() #筛选行
代码语言:javascript复制> filter(X,Species=="versicolor")
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.6 2.5 3.9 1.1
2 5.9 3.2 4.8 1.8
Species
1 versicolor
2 versicolor
> filter(X, Species == "versicolor"&Sepal.Length > 5 )
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.6 2.5 3.9 1.1
2 5.9 3.2 4.8 1.8
Species
1 versicolor
2 versicolor
> filter(X, Species %in% "versicolor")
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.6 2.5 3.9 1.1
2 5.9 3.2 4.8 1.8
Species
1 versicolor
2 versicolor
4、arrange() #表格排序
代码语言:javascript复制arrange(X, Sepal.Length) #默认从小到大排序
arrange(X, desc(Sepal.Length)) #用desc从大到小
5、summarise() #汇总
代码语言:javascript复制summarise(X, median(Sepal.Length), var(Sepal.Length)) # 计算Sepal.Length的中位数值和方差
> group_by(X, Species) #按照Species对X进行分组
A tibble: 8 × 5
# Groups: Species [2]
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 5.1 3.8 1.5 0.3
5 5.4 3.4 1.7 0.2
6 5.1 3.7 1.5 0.4
7 5.6 2.5 3.9 1.1
8 5.9 3.2 4.8 1.8
# ℹ 1 more variable: Species <fct>
> a= group_by(X, Species)
> summarise(a,mean(Sepal.Length), sd(Sepal.Length))
# A tibble: 2 × 3
Species `mean(Sepal.Length)` `sd(Sepal.Length)`
<fct> <dbl> <dbl>
1 setosa 5.05 0.235
2 versicolor 5.75 0.212
利用dplyr包----学习两个实用技能
- 管道操作 %>%
> X %>%
group_by(Species) %>%
summarise(mean(Sepal.Length), sd(Sepal.Length))
# A tibble: 2 × 3
Species `mean(Sepal.Length)` `sd(Sepal.Length)`
<fct> <dbl> <dbl>
1 setosa 5.05 0.235
2 versicolor 5.75 0.212
# 其实与上方汇总处结果一致!
- count() #统计某列的重复值和重复次数
count(X,Species)
数据框的连接
代码语言:javascript复制#先新建两个数据框
> test1 = data.frame(x = c('b','e','f','x'),
z = c("A","B","C",'D'))
> test2 = data.frame(x = c('a','b','c','d','e','f'),
y = c(1,2,3,4,5,6))
1、jnner_join #交集
代码语言:javascript复制inner_join(test1, test2, by = "x")
2、full_join #全连接
代码语言:javascript复制full_join( test1, test2, by = 'x')
3、left_join和right_join #左连接和右连接
代码语言:javascript复制> 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
> right_join(test1, test2, by = 'x')
x z y
1 b A 2
2 e B 5
3 f C 6
4 a <NA> 1
5 c <NA> 3
6 d <NA> 4
4、semi_join #半连接
代码语言:javascript复制#返回能够与y表匹配的x表所有记录
> semi_join(test1, test2, by = 'x') # 其中 x = test1, y = test2
x z
1 b A
2 e B
3 f C
5、anti_join #反连接
代码语言:javascript复制# 返回无法与y表匹配的x表的所记录
> anti_join(test2, test1, by = 'x') # 其中 x = test2, y = test1
x y
1 a 1
2 c 3
3 d 4
6、简单合并
代码语言:javascript复制cbind()函数和rbind()函数与bind_rows()函数和bind_cols()函数作用相似
注意,bind_rows()函数需要两个表格列数相同,而bind_cols()函数则需要两个数据框有相同的行数
bind_rows(test1, test2) #test1和test2均为数据框,且列数相等
bind_cols(test1, test3) #test1和test3均为数据框,且行数相等