R语言学习系列之separate {tidyr}

separate {tidyr}的功能是使用正则表达式分隔符将字符列分隔成多个列。给定正则表达式或字符位置向量,separate()将单个字符列转换为多个列。这个功能在生信分析中用到的频率太多了,比如TCGA的基因ID转换中ENSG00000000003.13转换成ENSG00000000003,比如对TCGA样本的ID切割等等。

下面我们来学习一下这个函数

用法

separate(data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ...)

加载包,创建数据

rm(list = ls())#一键清空library(tidyr)library(dplyr)df <- data.frame(x = c(NA, "a.b", "a.d", "b.c"))df

简单分割

#df表示分割对象,x表示对x这一列进行分割,“A”,“B”表示分割成A B两列

separate(df,x, c("A", "B"))

如果你只想要第二个变量

separate(df,x, c(NA, "B"))

如果每一行没有分成相同数量的片段,使用extra和fill参数来控制

df <- data.frame(x = c("a", "a b", "a b c", NA))df
separate(df,x, c("a", "b"))

这里就丢失了c

下面代码同样的行为会降低c,但没有警告

separate(df,x, c("a", "b"), extra = "drop", fill = "right")

没有警告,因为是我们主动抛弃c的,fill = "right"表示在右边填充缺失值缺失值,fill = "left"表示在左边填充缺失值

separate(df,x, c("a", "b"), extra = "drop", fill = "left")

还可以选择合并

separate(df,x, c("a", "b"), extra = "merge", fill = "left")

或者分割成三列

separate(df,x, c("a", "b","c"))

如果只想拆分指定的次数,就使用extra=“merge”

df <- data.frame(x = c("x: 123", "y: error: 7"))df

可以看到第二行有两个“:”

separate(df,x, c("key", "value"), ": ", extra = "merge")#用“: ”符号来分割

如果不加extra = "merge"

separate(df,x, c("key", "value"), ": ")

7这个数字就不见了

利用convert = TRUE可以自动检测对象的类型

df <- data.frame(x = c("a:1", "a:2", "c:4", "d", NA))df
a=separate(df,x, c("key","value"), ":")a
str(a)

这样分割的结果,数字不再是数字了,变成了字符了

b=separate(df,x, c("key","value"), ":", convert = TRUE)b
str(b)

保留了数字型向量的格式

TCGA实操

下面我们来实际操作一下

导入xena数据库下载的TCGA-LIHC count数据(所有肿瘤TCGA数据在文末可以拿到)

rm(list = ls())#一键清空library(tidyr)library(dplyr)LIHCdata=read.table("TCGA-LIHC.htseq_counts.tsv",header=T,sep='\t')LIHCdata[1:4,1:4]

去掉ensemble ID的点号

LIHCdata1<-separate(LIHCdata,Ensembl_ID,into = c("Ensembl_ID"),sep="\\.") LIHCdata1[1:4,1:4]

后面就可以进行ID转换了,这个我们放到TCGA数据分析系列讲。好了,separate这个函数我们就讲到这里。

另外,最近收集了一些很好的资源,想分享给大家,顺便能涨一些粉,主要有

1. 19年中标的各门类国自然题目汇总,以及17年的国自然汇总,部分含摘要!

2. R语言学习书籍

R语言实战(中文完整版)

R数据科学(中文完整版)

ggplot2:数据分析与图形艺术

30分钟学会ggplot2

3. TCGA数据整理

前期从https://xenabrowser.net/datapages/ (UCSC Xena)数据库下载的TCGA数据,传到了百度云上备份。

感兴趣的话,转发朋友圈或者100人以上的微信群,截图发到公众号,即可获取全部资源的百度云链接,链接7天有效,希望大家赶紧下载。你们的支持是我前进的动力,感谢。

(0)

相关推荐

  • R语言 | 数据操作tidyr包

    [更新~]Python网络爬虫与文本数据分析 tidyr包 类似于上图成行成列的表数据是干净数据(tidy data),一般每一行表示一条观测记录,每一列表示一个字段(变量)tidyr包是用来操作ti ...

  • 成功解决 ValueError: fill value must be in categories

    成功解决 ValueError: fill value must be in categories 解决问题 raise ValueError("fill value must be in ...

  • cellphonedb之可视化受体配体对

    cellphonedb之可视化受体配体对

  • R语言学习系列之“多变的热图”

    咱公众号也不能只做一个系列,所以经过深思熟虑,打算将来慢慢增加一些内容,主要有以下几个系列TCGA数据分析系列GEO数据分析系列"老板给一个基因,我该怎么办"系列文献阅读系列R语言 ...

  • 零基础R语言学习路线

    其实相对于常见的编程语言,R语言还是非常容易上手.学习1年多时间,就可以找一份不错的工作了. 前言 我当初学习R的时候在网上搜到一则流传很广的R语言学习路线图(R语言学习由浅入深路线图),我在微信圈, ...

  • R语言学习小感悟

    最近看了看<R数据科学>(即R for data science的中文版)和<R语言-实用数据分析和可视化技术>(即R for Everyone Advanced Analyt ...

  • R语言学习笔记

    R语言学习笔记

  • R语言学习入门导航-特别版

      jimmy导读 英雄帖发出之后,有新朋友加入,也有老朋友捧场,看样子88篇生物信息学优秀博客合集的小目标近在眼前了. 诚邀您加盟,生信技能树 生信土豆侠的-人体解剖医学包-gganatogram的 ...

  • R语言学习笔记(四):apply,sapply,lapply,tapply,vapply以及mapply的用法

    apply() apply(m,dimcode,f,fargs) m 是一个矩阵. dimcode是维度编号,取1则为对行应用函数,取2则为对列运用函数. f是函数 fargs是f的可选参数集 > ...

  • R语言统计系列第13篇-K-M生存曲线与logrank检验

    白介素2的读书笔记,分享临床科研干货,一起见证时间的力量 [科研绘图需求点我][付费精品合集][SEER点我] [临床预测模型专辑点我][生物信息数据库挖专辑点我] [临床数据挖掘专辑点我][SEER ...

  • R语言统计系列第12篇-泊松回归

    [科研绘图点我][付费精品合集][SEER点我] 今天是各类统计方法R语言实现的第12期,我们主要介绍泊松回归. 泊松回归 计数型,如某地区某年发生肿瘤患者的人数等,常用泊松回归,假设因变量Y服从泊松 ...

  • R语言统计系列第11篇-Logistic回归

    [科研绘图点我][付费精品合集][SEER点我] 今天是各类统计方法R语言实现的第11期,我们主要介绍Logistic回归.Logistic回归属于广义线性回归,因此我们从广义线性回归讲起. 广义线性 ...