R包
1 安装
1.1 镜像设置
tools/global options/package
1.2 安装命令
install.packages('包')
biocManager::install('包')
#取决于你要安装的包存在于CRAN网站还是Biocductor
library(包)
require(包)
#打开包
2 dplyr五个基础函数
test <- iris[c(1:2,51:52,101:102),]
#取出iris数据中第1,2,51,52,101,102行的数据
2.1 mutate 添加列
mutate(test, new = Sepal.Length * Sepal.Width)
#新建列,数据从test中取,列名为new,数据为列Sepal.Length 和Sepal.Width相乘的结果
注意,这里添加的列的不存在于test中的,如果需要改变的话需要赋值给test(test<-)
2.2 select 筛选列
按列号筛选
select(test,c(1,5))
取出第一和第五列
按列名筛选
select(test, Petal.Length, Petal.Width)
取出名叫Petal.Length, Petal.Width的两列
2.3 filter 筛选行
filter(test, Species == "setosa")
#筛选test变量中Species这一列中是setosa的行
## 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
filter(test, Species == "setosa"&Sepal.Length > 5 )
#筛选test变量Species这一列中是setosa并且Sepal.Length>5的行
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
filter(test, Species %in% c("setosa","versicolor"))
#筛选物种存在于向量c("setosa","versicolor")中的行
2.4 arrange 按某1列或某几列对整个表格进行排序
arrange(test, Sepal.Length)#默认从小到大排序
arrange(test, desc(Sepal.Length))#desc:降序排列
2.5 summarise 汇总
group_by(test,species)
#对于test变量中的species列进行分组,相同的放在一起
summarise(test,mean(Sepal.Length),sd(Sepal.Width))
#分别计算test变量中Sepal.Length和Sepal.Width列的平均值和方差
summarise(group_by(test,Species),mean(Sepal.Length),sd(Sepal.Width))
#分别计算test变量不同物种中Sepal.Length和Sepal.Width列的平均值和方差、
3 dplyr的实用技能
3.1 管道操作
%>% 用ctrl+shift+M可以打出来
test %>%
group_by(Species) %>%
summarise(mean(Sepal.Length),sd(Sepal.Length))
#这段的功能和summarise(group_by(test,Species),mean(Sepal.Length),sd(Sepal.Width))是一样的,意思是可以直接把数据传递给下一个函数调用或表达式
3.2 count统计某列的unique值
count(test,Species) #统计Species中的种类以及数量
4 dplyr处理关系数据
新建数据框
test1 <- data.frame(x=c('1','2','3','4'),
y=c('a','b','c','d'),
stringsAsFactors=T)
#stringsAsFactors: 逻辑:字符向量是否应该转换为因子?默认值是TRUE,但是可以通过设置选项(stringsAsFactors=FALSE)来改变这一点。
1.內连inner_join,取交集
inner_join(test1, test2, by = "x")
2.左连left_join(从test1里取x列的值,并把对应的y表的数据加上)
left_join(test1, test2, by = 'x')
3.全连full_join
full_join( test1, test2, by = 'x')
4.半连接:返回能够与y表匹配的x表所有记录semi_join
semi_join(x = test1, y = test2, by = 'x')
5.反连接:返回无法与y表匹配的x表的所记录anti_join
anti_join(x = test2, y = test1, by = 'x')
6.简单合并
bind_rows(test1, test2)
#把test1和test2中的行合并,需要两个表格列数相同
bind_cols(test1, test3)
#把test1和test2中的列合并,需要有相同的行数
相当于base包里的cbind()函数和rbind()函数