学习小组Day6笔记--马小林
1、如何配置RStudio的下载镜像
基础
在RStudio中,选择Tools——Packages——Primary CRAN repository——Change——China(Beijing)TUNA那个镜像
缺点:这个只能设置CRAN的镜像,但如果要下载Bioconductor的包,这个镜像无法work。
进阶
在RStudio中自定义
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
缺点:重启RStudio时,下载Bioconductor很可能被修改为官方镜像
终极
修改R的配置文件.Rprofile
file.edit('~/.Rprofile')
随后在脚本区添加
options("repos" = c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
再次重启时仍可以保持国内镜像位置
2、安装R包
install.packages(“names_package”)#存在于CRAN网站的包
BiocManager::install(“names_package”)#存在于Biocductor网站的包
3、加载
library(names_package)
require(names_package)#两个命令均可
4、dplyr基础函数
下列数据以iris为基础,iris是内置的一个构建好的数据集
test <- iris[c(1:2,51:52,101:102),]
test
## 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
## 3 7.0 3.2 4.7 1.4 versicolor 22.40
## 4 6.4 3.2 4.5 1.5 versicolor 20.48
## 5 6.3 3.3 6.0 2.5 virginica 20.79
## 6 5.8 2.7 5.1 1.9 virginica 15.66
mutate(),增加列
mutate(test, new = Sepal.Length * Sepal.Width)#增加一个列,名为new,数据是 Sepal.Length 乘Sepal.Width返回的值
select(),按列筛选
按列号
select(test,1)#取出第一列
select(test,c(1,5))#取出第一、五列
按列名
select(test,Sepal.Length,names_column)#取出名为Sepal.Length及其他命名的列
vars <- c("Petal.Length", "Petal.Width")
select(test, one_of(vars))#先定义一个变量,再取出这个数据框中的这个变量,all_of(vars)和one_of(vars)在操作中返回结果一样,没找到解释
filter()筛选行
filter(test, Species == "setosa")#选择列Species中行名是setosa的行
filter(test, Species == "setosa"&Sepal.Length > 5 )#选择列Species中行名是setosa且Sepal.Length列值大于5的行
filter(test, Species %in% c("setosa","versicolor"))#选择列Species中行名是setosa、versicolor的行
arrange(),按列对整个表格进行排序
arrange(test, Sepal.Length)#默认从小到大排序
arrange(test, desc(Sepal.Length))#用desc从大到小排序
summarise():汇总
summarise(test, mean(Sepal.Length), sd(Sepal.Length))# 计算Sepal.Length的平均值和标准差
也可以通过分组的方式,更细致的处理数据
group_by(test, Species)#按照Species分组
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
5、dplyr的小tips
管道操作 %>%
加载任意一个tidyverse包就可以用管道符号,dplyr和ggplot2是其中最著名的两个,快捷键是Ctrl+Shift+M
test %>%
group_by(Species) %>%
summarise(mean(Sepal.Length), sd(Sepal.Length))
count统计某列的unique值
count(test,Species)#返回的结果是Species中每一种行名的行个数
6、dplyr处理关联数据
先创建两个表
options(stringsAsFactors = F)
test1 <- data.frame(x = c('b','e','f','x'),
z = c("A","B","C",'D'),
stringsAsFactors = F)#stringsAsFactors表示是否将字符串变为因子,字符串要加引号
test2 <- data.frame(x = c('a','b','c','d','e','f'),
y = c(1,2,3,4,5,6),
stringsAsFactors = F)
內连inner_join,取交集
inner_join(test1, test2, by = "x")#取test1和test2中相同的行名,取其中相同的数据,并按照test1在前,test2在后的顺序排列
左连left_join
left_join(test1, test2, by = 'x')
left_join(test2, test1, by = 'x')#以排在前面的test2表的x列为标准,将test1的对应值放在test2表的右边
全连full_join
full_join( test1, test2, by = 'x')#取并集,并按照test1、test2的顺序合并表
半连接:返回能够与y表匹配的x表所有记录semi_join
semi_join(x = test1, y = test2, by = 'x')
反连接:返回无法与y表匹配的x表的所记录anti_join
anti_join(x = test2, y = test1, by = 'x')#与-的含义相似
简单合并
bind_rows(test1, test2)#按行合并,必须列数相同
bind_cols(test1, test3)#按列合并,必须行数相同
7、思维导图
DAY-6.png