package处理数据
镜像设置
- R的包主要来源于CRAN网站和Biocductor,生信主要来源于Biochuctor
- 镜像代码设置
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
- tools=>Global options=>packages
包的加载
装包三部曲
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)
dplyr 包
- dplyr是一个dplyr包主要用于数据清洗和整理,主要功能有:行选择、列选择、统计汇总、数据框交集等是非常高效、友好的数据处理包。
-
test <- iris[c(1:2,51:52,101:102),]
iris 是R内置的一个数据集。
- dplyr五个基础函数
- mutate(),新增列,
mutate(test, new = Sepal.Length * Sepal.Width)
- select(),按列筛选,
- 按列号筛选
select(test,1),# 多列:select(test,C(1,5))
- 按列名筛选
select(test, Petal.Length, Petal.Width)
- filter()筛选行 filter详解
- 筛选1个
filter(test, Species == "setosa")
- 筛选指定
filter(test, Species == "setosa"&Sepal.Length > 5 )
- 筛选
filter(test, Species %in% c("setosa","versicolor"))
- arrange(),按某1列或某几列对整个表格进行排序,
arrange(test, Sepal.Length)
默认从小到大排序 arrange(test, desc(Sepal.Length))
#用desc从大到小
- summarise():汇总计算平均值,标准差,中位数等。
summarise(test, mean(Sepal.Length), sd(Sepal.Length))
# 计算Sepal.Length的平均值和标准差
- group_by 定义分组变量,与summarise合用可高效处理数据
先按照Species分组,计算每组Sepal.Length的平均值和标准差group_by(test, Species)
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length))
- count统计某列的unique值
count(test,Species)
把重复元素或行给删除的向量、数据框
管道操作
- 什么是管道操作?一个高效的管道操作工具包,通过管道的连接方式,让数据或表达式的传递更高效
- 安装
magrittr
包 install ("magrittr")
- 加载
library(magrittr)
- %>% 左边程序传递给右边
test %>% group_by(Species) %>% summarise(mean(Sepal.Length), sd(Sepal.Length))
- 內连inner_join,取交集
inner_join(test1, test2, by = "x")
by="x"
表示变量为x列
- 左连保留左边及交集,
left_join(test1, test2, by = 'x')
,还有右边连接
- 全连取并集,
full_join( test1, test2, by = 'x')
- 筛选连接匹配观测的方式与合并连接相同,但前者影响的是观测,而不是变量。# 行表示观测,列表示变量。
- semi_join(x, y): 保留 x 表中与 y 表中的观测相匹配的所有观测。
semi_join(x = test1, y = test2, by = 'x')
- anti_join(x, y): 丢弃 x 表中与 y 表中的观测相匹配的所有观测。```anti_join(x = test2, y = test1, by = 'x')
- 简单合并:在相当于base包里的cbind()函数和rbind()函数;注意,
- bind_rows()函数需要两个表格列数相同,横向合并
bind_rows(test1, test2)
- bind_cols()函数则需要两个数据框有相同的行数,纵向合并
bind_cols(test1, test3)