豆花寄语:学生信,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)