基础004:R语言数据处理和变换——dplyr
- dplyr
- 背景简介
- 安装和数据准备
- 常用函数
- 变量筛选select
- 数据筛选filter
- 排序arrange
- 创建新变量mutate
本文“植物微生物组”公众号原创,ID: plantmicrobiome
作者:秦媛
原文链接:基础004:R语言数据处理和变换——dplyr(1)
dplyr
背景简介
在处理数据的过程中,经常需要根据需求从完整的实验设计和数据中筛选、整理出可以直接使用的部分,这就涉及到数据整理和变换工作。
常用的数据整理和变换主要包括以下几类:
- 选取特定分析变量
- 筛选满足条件的数据
- 按照某个变量排序
- 对数据进行分组和汇总
- 对原始变量重新加工并生成新变量
如果我们想通过R语言来解决上述问题,dplyr
包就是一个很好用的工具之一。所以在这里对dplyr
包的基础和常用功能进行小结。
安装和数据准备
安装dplyr
包
install.packages("dplyr")
library(dplyr)
示例数据:以我们最常用到的OTU表和物种分类表为例来说明dplyr
的用法。
otu <- read.table("otutab_norm.txt", head=TRUE,sep="\t", comment.char="")
tax <- read.table("taxonomy_8.txt", head=TRUE, sep="\t", comment.char="")
常用函数
dplyr
包最常使用的函数主要包括以下几个:
- 变量筛选函数:
select
- 数据筛选函数:
filter
- 排序函数:
arrange
- 变形函数:
mutate
- 汇总函数:
summarize
- 分组函数:
group_by
- 管道连接符:
%>%
- 随机抽样函数:
sample_n
,sample_frac
变量筛选select
select
是一个筛选变量函数,可以通过选择列名,筛选指定的变量。
通常一个OTU表的每一列都是唯一的样品名,即一个单独的变量,每一行是一个OTU单元。我们常见的操作就是根据不同的需求,我们选择不同的样品进行比较,分析组间差异OTU。
首先我们要根据实验设计,明确所有样品最基本的分组。
在工作目录下,输入以下命令可以快速查看样品分组信息:
tail -n+2 design.txt | cut -f 5 | sort | uniq | awk '{print "\""$1"\""}' | tr "\n" ","
(注:输入文件design.txt
是实验设计,通常第五行是groupID,即分组信息)
例如我们的示例数据,样品信息就是
"BSBS","EMS1212R","EMS1663R","EMS2384R","EMS2661R","EMS2876R","EMS2883R","EMS2985R","Wt1R","Wt2R"
因为我们的实验每组样品通常会有一些生物学重复,在示例数据OTU表中,每组有三个重复。
所以,如果只看Bulksoil的OTU分布情况,就可以提取:
data1 <- select(otu, BSBS1, BSBS2, BSBS3)
如果想查看多组,多个样品的,可以提取:
# 用冒号连接列名,可以选择多个列
data2 <- select(otu, BSBS1:BSBS3, Wt1R1:Wt1R3, EMS1663R1:EMS1663R3)
除此之外,dyplr
提供了一些有特殊功能的函数,和select()
相结合,用于变量名称的筛选。包括starts_with
,ends_with
,contains
,matches
,one_of
,num_range
和everything
等
# 选择所有野生型
data_wt <- select(otu, starts_with("Wt"))
# 选择除BS以外的所有样品
data_except_bs <- select(otu, -starts_with("BS"))
# 选择变量名中包含2384的列
data_2384 <- select(otu, contains("2384"))
# 调整列顺序,将WtR1组放在最前面
data_wt_front <- select(otu, Wt1R1:Wt1R3, everything())
数据筛选filter
filter
函数是数据筛选函数,直接指定条件,筛选符合指定条件的数据。
例如,筛选根外土OTU数量大于10的样品
data3 <- filter(data1, BSBS1 > 10 & BSBS2 >10 & BSBS3 >10 )
筛选物种分类表中属于某一类的样品
data_Alpha <- filter(tax, Class == "Alphaproteobacteria")
filter
函数也可以用于单独检查、剔除异常值。
排序arrange
arrange
函数是根据变量名依次对数据框进行排序,靠前的变量优先级越高,对变量名使用desc函数即为倒序。
默认是升序排列:
data4 <- arrange(data3, BSBS1)
倒序排列是在列名前加desc()
data5 <- arrange(data3, desc(BSBS1))
创建新变量mutate
mutate
函数可用于在原始变量的基础上,经过简单计算和预处理,创建新的变量
举个简单的例子,求某一组样品多个重复下的均值,写入新变量中:
data6 <- mutate(data3, ave= round((BSBS1 + BSBS2 + BSBS3)/3))
(round()
用来四舍五入取整)
参考资料
R语言滴水穿石系列文章(一):dplyr-高效的数据变换与整理工具: https://www.jianshu.com/p/b2abad66cb01
R语言数据处理之dplyr包: https://zhuanlan.zhihu.com/p/27505645
基础004:R语言数据处理和变换——dplyr相关推荐
- R语言数据处理——基础篇 data.frame基本操作
文章目录 R语言数据处理--基础篇 data.frame基本操作 data.frame的创建 数据访问.条件筛选与删除 数据访问 数据筛选 删除 使用`gather()`进行data.frame数据格 ...
- 语句拼接_第2课:一个周末学会R语言数据处理:表拆分和拼接
从一线收集了两百个文件,要整合到一起?总部一张全国两百个城市的汇总表,拆成两百个小文件?开什么玩笑,难道要复制粘贴到天荒地老... 不用这么麻烦,一个循环,一个语句,实现快速表拆分和表拼接,从此告别复 ...
- r语言必学的十个包肖凯_30 天学会R DAY 14:R语言必学包dplyr
原标题:30 天学会R DAY 14:R语言必学包dplyr 第14天 R语言必学包dplyr R语言非常讲究数据的整理,我们在7-13天的R语言学习内容中,着重都是关于R语言的整理,各种方法对数据进 ...
- Gauss Quadrature数值求积基础与R语言实践
Gauss Quadrature数值求积基础与R语言实践 Gauss Quadrature的基本概念 R语言实践 例1:Gauss-Legendre Quadrature 例2:Gauss-Lague ...
- R语言数据处理学习记录--使用linkET包完成mental test
R语言数据处理学习记录–使用linkET包完成mental test 注:本文仅作为自己的学习记录以备复习查阅 一 简单介绍一下 这个包依旧是来自于GitHub上,作者给出的介绍:linkET的目标是 ...
- 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理
零基础自学R语言 文章目录 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理 1.3.1 扩展包使用 1.3.2 安装 1.3.3 Github和BioConductor的扩展包 1 ...
- R开发(part3)--概率基础和R语言
学习笔记,仅供参考,有错必纠 参考自:<R的极客理想>-- 张丹 文章目录 R开发 概率基础和R语言 随机变量 大数定理 R开发 概率基础和R语言 随机变量 在样本空间(1,2,3,4,5 ...
- r语言pls分析_零基础学习R语言分析GEO
关于零基础用R语言分析GEO的视频已更新完,发布在B站,有兴趣的小伙伴可以移驾到B站,我的B站号:I_am_Becky 之前录制过一系列关于零代码分析GEO数据的,但是这样画出来的图太low了,所以学 ...
- R语言进行Box-Cox变换
@R语言进行Box-Cox变换 R语言进行Box-Cox变换 Box-Cox变换是Box和Cox在1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的 ...
最新文章
- java nextline_Java编程语言基础的9根支柱
- 物联网助推超市转型之具体应用分析
- mysql中lock_mysql中的锁lock
- [BZOJ4403]序列统计
- 【新星计划】Python OpenCV 形态学应用—图像开运算与闭运算
- qt vs插件 qt-vsaddin下载
- 优朋普乐大数据_优朋普乐邵以丁:用大数据全面洞察需求
- Algorithm I assignment Collinear
- jsp 内置的对象的简要概述(转)
- c/c++ 前置声明 -- typedef问题
- Nginx负载均衡和反向代理设置
- 高性能数据库集群:读写分离
- 解读灰度直方图的信息
- lib文件夹 springboot_我把 Spring Boot 项目从 18.18M 瘦身到 0.18M,部署起来真省事!...
- python图像拼接_图像拼接_图像拼接算法_python图像拼接 - 云+社区 - 腾讯云
- ubuntu20.04 NVIDIA显卡驱动安装教程(Y9000p)
- win 7旗舰版开机提示 :explorer.exe-无法找到入口
- Oliver的成绩(vector)
- 【TAGE】分支预测
- DKN: Deep Knowledge-Aware Network for News Recommendation