生信学习-Day6-学习R包

2024-01-21 11:29:12 浏览数 (1)

豆花寄语:学生信,R语言必学的原因是丰富的图表和Biocductor上面的各种生信分析R包

安装和加载R包

1 镜像设置

运行这两行代码,可以搞定

options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) #对应清华源

options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") #对应中科大源

2 安装

R包安装命令是install.(“包”)或者BiocManager::install(“包”)取决于你要安装的包存在于CRAN网站还是Biocductor,存在于哪里?可以谷歌搜到。

3 加载

library和require,两个函数均可。使用一个包,是需要先安装再加载,才能使用包里的函数。

例子:

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)

测试的数据框:

test <- irisc(1:2,51:52,101:102),

在R语言中,这行代码是对数据集 iris 进行子集选择的操作。让我们分解一下代码的各个部分来理解它的含义: iris: 这是R语言中自带的一个数据集,包含了150个样本,每个样本都是不同的鸢尾花,有4个花的测量特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度)和一个种类标签。 c(1:2,51:52,101:102),: 这部分是一个索引操作,用于选择数据集中的特定行。c(1:2,51:52,101:102) 创建了一个组合向量,包含了这些数字:1, 2, 51, 52, 101, 102。这些数字代表 iris 数据集中的行号。 irisc(1:2,51:52,101:102),: 这个整体表达式的意思是从 iris 数据集中选择行号为1, 2, 51, 52, 101, 102的行。逗号之后的空位表示选择这些行的所有列(即所有的特征和标签)。 test <-: 这是赋值操作,它会将选择的子集保存到一个新的变量 test 中。 综上所述,这行代码的作用是创建一个新的数据框 test,它包含了 iris 数据集中的第1、2、51、52、101、102行.

4 五个基础函数

1.新增列:mutate()

2.选择列(按列筛选)

列号:

(1)select(test,1)#选择第一列

(2)select(test,c(1,5))#选择第一列和第五列;(3)select(test,Sepal.Length)

列名:

(1)select(test, Petal.Length, Petal.Width)

(2)vars <- c("Petal.Length", "Petal.Width")

select(test, one_of(vars))

创建了一个名为 vars 的新变量,它是一个字符向量。在这个特定的例子中,向量 vars 包含了两个元素,它们都是字符串:"Petal.Length" 和 "Petal.Width"。这两个字符串通常对应于数据框中的列名。在 iris 数据集中,Petal.Length 和 Petal.Width 分别代表花瓣的长度和宽度。 因此,当你使用 vars 变量时,你实际上是在引用那些具有这些名称的列。这样做的目的通常是为了在后续的函数调用中简化代码,特别是在你想要操作数据框中特定的列时。 这会从 your_data_frame 数据框中选择列名与 vars 向量中的字符串相匹配的列。在这个上下文中,your_data_frame 应该被替换为你想要操作的实际数据框的名字。

3.按行筛选

(1)filter(test, Species == "setosa")

(2)filter(test, Species == "setosa"&Sepal.Length > 5 ) &=And

(3)filter(test, Species %in% c("setosa","versicolor"))

在R语言中,%in%是一个匹配操作符,用于测试一个值是否在某个集合中。在dplyr包的filter()函数中使用时,它可以用于筛选数据框中匹配给定集合中任一值的行。这行代码的作用如下: filter(test, ...): 在test数据框中筛选行。 Species %in% c("setosa", "versicolor"): 选择Species列中的值是"setosa"或"versicolor"的行。 执行这个操作后,你将得到一个新的数据框,其中只包含test数据框中Species列值为"setosa"或"versicolor"的行。这相当于从原始的test数据框中筛选出所有属于"setosa"或"versicolor"这两个种类的鸢尾花样本。

(4)arrange(),按某1列或某几列对整个表格进行排序

arrange(test, Sepal.Length)#默认从小到大排序

arrange(test, desc(Sepal.Length))#用desc从大到小

desc(Sepal.Length): desc() 函数用于指示 arrange() 按照降序(从大到小)来排序 Sepal.Length 列。

(5)summarise():汇总.对数据进行汇总操作,结合group_by使用实用性强

summarise(test, mean(Sepal.Length), sd(Sepal.Length))# 计算Sepal.Length的平均值和标准差

先按照Species分组,计算每组Sepal.Length的平均值和标准差

group_by(test, Species)

summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))

5.两个实用技能

1.管道操作

具体来说,这段代码的步骤如下: test %>%:这部分将数据框test传递到下一个步骤中。 group_by(Species):这一步将数据按照Species列的不同值进行分组,即将数据集分成多个子集,每个子集包含相同Species值的数据。 summarise(mean(Sepal.Length), sd(Sepal.Length)):在每个分组内,这一步计算了Sepal.Length列的平均值(mean)和标准差(sd)。 最终的结果将是一个新的数据框,其中包含了每个不同Species值的平均Sepal.Length和标准差Sepal.Length。

6.处理数据关系

1.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))

data.frame(): 这个函数用来创建数据框。数据框是R语言中类似于表格的二维数组结构,每一列包含了一个变量的值,每一行包含了每个变量的一个值集。 x = c('b','e','f','x'): 这部分代码创建了一个名为x的列,包含四个字符值:'b'、'e'、'f'和'x'。 z = c("A","B","C",'D'): 类似地,这部分代码创建了另一个名为z的列,包含四个字符值:'A'、'B'、'C'和'D'。test1 <-: 这是R语言中的赋值操作符,用于将data.frame()函数创建的数据框赋值给变量test1。 2.inner_join(test1, test2, by = "x")內连inner_join,取交集 在R中,inner_join(test1, test2, by = "x") 是一个使用 dplyr 包中的 inner_join 函数来合并两个数据框(data frames)的命令。这个函数执行的是一个内连接(inner join),它会将两个数据框中具有相同键值的行组合在一起。这里的 "键值" 是用于连接两个数据框的列。 详细来说: test1 和 test2 是要进行连接的两个数据框。 by = "x" 指定了连接的基础是哪一列。这意味着函数将查找 test1 和 test2 中列名为 "x" 的列,并基于这两列中的匹配值来合并行。只有当两个数据框中都存在列 "x" 且某些行在这一列的值相等时,这些行才会出现在最终的结果中。

内连接的特点是只包含两个数据框中键值匹配的行。如果 test1 中的某行在其 "x" 列中的值在 test2 的 "x" 列中没有对应值,则这行不会出现在结果中,反之亦然。

3..左连left_join

left_join(test1, test2, by = 'x')

left_join(test2, test1, by = 'x')

4.全连`full_join

full_join( test1, test2, by = 'x')

5.半连接:返回能够与y表匹配的x表所有记录semi_join

semi_join(x = test1, y = test2, by = 'x'),针对test1和test2,就是bce.

x = test1:表示要在test1数据框中执行semi-join操作。 y = test2:表示要与test2数据框进行semi-join操作,即保留test1中与test2匹配的行。 by = 'x':指定要根据哪个列进行匹配。在这里,使用列x来进行匹配。 结果将是一个新的数据框,其中包含了test1中那些在test2中找到匹配项的行,而不包含在test2中找不到匹配项的行。这种操作通常用于数据集的筛选,以保留与另一个数据集相关的数据。

6.反连接:返回无法与y表匹配的x表的所记录`anti_join

anti_join(x = test2, y = test1, by = 'x'),针对test1和test2,就是acd

这个操作的目的是从test2数据框中删除与test1数据框中的列x匹配的行。 具体来说,这行代码的作用是: x = test2:表示要从test2数据框中执行anti-join操作。 y = test1:表示要与test1数据框进行anti-join操作,即从test2中删除与test1匹配的行。 by = 'x':指定要根据哪个列进行匹配。在这里,使用列x来进行匹配。 结果将是一个新的数据框,其中包含了test2中那些在test1中找不到匹配项的行。这种操作通常用于数据集的清洗和筛选,以删除重复的或不需要的数据。

7.简单合并

test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40))

test2 <- data.frame(x = c(5,6), y = c(50,60))

test3 <- data.frame(z = c(100,200,300,400))

bind_rows(test1, test2)

bind_cols(test1, test3)

0 人点赞