生信星球学习小组笔记 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 virginica1. 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.662.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.93.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 setosa4.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 setosa5.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 42.左连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 NA3.全连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> 24.半连接:返回能够与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 B5.反连接:返回无法与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 26.简单合并
代码语言: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


