生信星球学习小组Day6-云朵

2023-11-05 09:25:37 浏览数 (1)

今天学习的主题是R包,内容多多。。

1. 安装和加载R包

1.1.镜像设置

#是为了加快R包的安装下载速度,要用到R的配置文件.Rprofile

首先用file.edit()来编辑文件:file.edit('~/.Rprofile')

然后在其中添加好下面的两行options代码

options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))

options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")

保存后重启Rstudio,再运行下面两行代码:

options()$repos

options()$BioC_mirror

1.2.安装

options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) 

options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") 

1.3 加载

install.packages("dplyr")

示例数据 test <- iris[c(1:2,51:52,101:102),]

2. dplyr五个基础函数

2.1.mutate(),新增列

mutate(test, new = Sepal.Length * Sepal.Width)

2.2.select(),按列筛选

(1)按列号筛选

select(test,1)#筛选第1列内容

select(test,c(1,5))

select(test,Sepal.Length)#筛选列名为Sepal.Length的数据

(2)按列名筛选

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

vars <- c("Petal.Length", "Petal.Width")#把"Petal.Length", "Petal.Width"数据命名为"vars"

select(test, one_of(vars))

2.3.filter()筛选行

filter(test, Species == "setosa")

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

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

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

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

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

2.5.summarise():汇总, 结合group_by使用

summarise(test, mean(Sepal.Length), sd(Sepal.Length))# 先按照Species分组,计算Sepal.Length的平均值和标准差

group_by(test, Species)

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

3. dplyr两个实用技能

3.1 管道操作 %>% (cmd/ctr shift M)

3.2 count统计某列的unique值

count(test,Species)

4. dplyr处理关系数据

#将2个表进行连接

4.1.內连inner_join,取交集

inner_join(test1, test2, by = "x")

4.2.左连left_join

left_join(test1, test2, by = 'x')#以test1的x列为列,取交集

left_join(test2, test1, by = 'x')#以test2的x列为列,取交集

4.3.全连full_join

full_join( test1, test2, by = 'x')#将test1和test2的x列合并为列

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

semi_join(x = test1, y = test2, by = 'x')

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

anti_join(x = test2, y = test1, by = 'x')

4.6.简单合并

bind_rows()函数需要两个表格列数相同,而bind_cols()函数则需要两个数据框有相同的行数

bind_rows(test1, test2)

bind_cols(test1, test3)

0 人点赞