生信星球学习小组笔记 2023年12月2日
一、R包的下载与装载
设置镜像(解决因网络问题不能下载)
代码语言:txt复制options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #对应清华源
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #对应中科大源
其次,在Rstudio→Tools→Global options→Packages里面也能设置。
安装命令
install.packages(“package”)
or BiocManager::install(“package”)
前者是安装来源于CRAN网站的包,后者是来源于Bioconductor网站的包。
加载
一般用library("package")
即可
二、R包的使用方法(以dplyr包为例)
*示例数据
代码语言:txt复制test <- iris[c(1:2,51:52,101:102),]
> head(test) #head()函数观察下数据的前6行
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
51 7.0 3.2 4.7 1.4 versicolor
52 6.4 3.2 4.5 1.5 versicolor
101 6.3 3.3 6.0 2.5 virginica
102 5.8 2.7 5.1 1.9 virginica
1. mutate(),新增列。观察最后一列
代码语言:txt复制mutate(test, new = Sepal.Length * Sepal.Width)
> mutate(test, new = Sepal.Length * Sepal.Width)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
1 5.1 3.5 1.4 0.2 setosa 17.85
2 4.9 3.0 1.4 0.2 setosa 14.70
51 7.0 3.2 4.7 1.4 versicolor 22.40
52 6.4 3.2 4.5 1.5 versicolor 20.48
101 6.3 3.3 6.0 2.5 virginica 20.79
102 5.8 2.7 5.1 1.9 virginica 15.66
2.select(),按列筛选。注意与[]方式取值相比较
代码语言:txt复制select(test,1) #列号
> select(test,1)
Sepal.Length
1 5.1
2 4.9
51 7.0
52 6.4
101 6.3
102 5.8
select(test, Petal.Length, Petal.Width) #列名
> select(test, Petal.Length, Petal.Width)
Petal.Length Petal.Width
1 1.4 0.2
2 1.4 0.2
51 4.7 1.4
52 4.5 1.5
101 6.0 2.5
102 5.1 1.9
3.filter()筛选行
代码语言:txt复制filter(test, Species == "setosa"&Sepal.Length > 5 ) #此处结合了逻辑取值
> filter(test, Species == "setosa"&Sepal.Length > 5 )
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
4.arrange(),按某1列或某几列对整个表格进行排序
代码语言:txt复制arrange(test, desc(Sepal.Length)) #此处利用desc更改了排序方向
> arrange(test, desc(Sepal.Length))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 7.0 3.2 4.7 1.4 versicolor
2 6.4 3.2 4.5 1.5 versicolor
3 6.3 3.3 6.0 2.5 virginica
4 5.8 2.7 5.1 1.9 virginica
5 5.1 3.5 1.4 0.2 setosa
6 4.9 3.0 1.4 0.2 setosa
5.summarise():汇总。★结合group_by可以高效汇总
此处需要详细的视频进行理解!
强烈推荐珍藏视频,来自张敬信老师的语法串讲
https://www.bilibili.com/video/BV1HQ4y1v75M
tidyverse包中还有一个非常重要的工具:管道。%>%
,在视频中也有讲解!
三、dplyr处理关系数据
设置练习数据
代码语言:txt复制test1 <- data.frame(x = c('red','blue','yellow','green'), z = c("A","B","C",'D'))
test2 <- data.frame(x = c('pink','orange','red','blue'), y = c(1,2,3,4))
1.內连inner_join,取交集
代码语言:txt复制inner_join(test1, test2, by = "x") #test1和test2按照x列中都有的取
> inner_join(test1, test2, by = "x")
x z y
1 red A 3
2 blue B 4
2.左连left_join
代码语言:txt复制left_join(test1, test2, by = 'x') #以test1为主要的,按照x列合并test2
> left_join(test1, test2, by = 'x')
x z y
1 red A 3
2 blue B 4
3 yellow C NA
4 green D NA
3.全连full_join
代码语言:txt复制full_join( test1, test2, by = 'x') #取全集
> full_join( test1, test2, by = 'x')
x z y
1 red A 3
2 blue B 4
3 yellow C NA
4 green D NA
5 pink <NA> 1
6 orange <NA> 2
4.半连接:返回能够与y表匹配的x表所有记录semi_join
代码语言:txt复制semi_join(x = test1, y = test2, by = 'x') #注意是谁匹配谁
> semi_join(x = test1, y = test2, by = 'x')
x z
1 red A
2 blue B
5.反连接:返回无法与y表匹配的x表的所记录anti_join
代码语言:txt复制anti_join(x = test2, y = test1, by = 'x')
> anti_join(x = test2, y = test1, by = 'x')
x y
1 pink 1
2 orange 2
6.简单合并
代码语言:txt复制bind_rows(test1, test2)
> bind_rows(test1, test2)
x z y
1 red A NA
2 blue B NA
3 yellow C NA
4 green D NA
5 pink <NA> 1
6 orange <NA> 2
7 red <NA> 3
8 blue <NA> 4
#还有bind_cols()
再次强烈推荐珍藏视频,来自张敬信老师的语法串讲
https://www.bilibili.com/video/BV1HQ4y1v75M