Tidyverse|数据列的分分合合,爱恨情仇

本文首发于“生信补给站”Tidyverse|数据列的分分合合,一分多,多合一

TCGA数据挖掘可做很多分析,前期数据“清洗”费时费力但很需要。

比如基因列为ID的需要转为常见的symbol,基因列为symbol|ID的就需要拆开了!

excel分列可以解决,但是表达量数据较大,且excel容易产生“数据变形”。

一, 载入数据,R包

使用TCGA下载的数据,使用以下几行几列, 作为示例

library(tidyverse)
data <- read.csv("separate.csv",header = TRUE, check.name = FALSE)
head(data)
           ID          ID2 TCGA-18-3406-01A-01R-0980-07 TCGA-18-3407-01A-01R-0980-07
1       A1BG|1       A1BG/1                     741.6929                      46.7127
2   A1CF|29974   A1CF/29974                       0.0000                       0.4757
3  A2BP1|54715  A2BP1/54715                       0.0000                       0.0000
4  A2LD1|87769  A2LD1/87769                     170.2362                     118.4063
5 A2ML1|144568 A2ML1/144568                     128.3465                    1413.4158
6        A2M|2        A2M/2                    9074.6772                   11310.1713

可以看到第一列的ID,和人为添加的ID2,名称不规则,我们只需要前面的基因名。

二,合久可分 - 一列拆多列

使用separate函数, 将“指定”分隔符出现的位置一列分成多列

2.1 默认,不指定分隔符

data %>% 
separate(ID, into = c("Gene", "IDnum")) %>% head()

2.2 指定分隔符且保留原始列

data %>% 
separate(ID2, into = c("Gene2", "IDnum2"),sep = "/",remove = FALSE) %>%
head()

2.3 特殊字符的指定方式

data %>% 
separate(ID, into = c("Gene1", "IDnum1"),sep = "l",remove = FALSE) %>%
head()

按照同样的方式,想把"|"分隔的ID拆分,发现报错。?黑人问号脸

有问题可以先?separate或者help(separate)查询帮助函数,"|"为特殊字符,可以使用"[|]"括起来或者"\\|",均可:

data %>% 
separate(ID, into = c("Gene1", "IDnum1"),sep = "[|]",remove = FALSE) %>% head()
#或者
data2 <- data %>%
separate(ID, into = c("Gene1", "IDnum1"),sep = "\\|",remove = FALSE)

2.4,按照第几个字符拆

根据第几个字符拆分,适合数据规整的,,,

可以用来将TCGA中的sampleID转为常见的16位,需要先转置

#
data2 %>% select(Gene1,contains("TCGA")) %>% #选择指定列
column_to_rownames(var = "Gene1") %>%  # 将Gene1列转为rownames
t() %>% as.data.frame() %>% #数据转置,样本为行名
rownames_to_column(var="Sample") %>%  #行名变为数据中的列
separate(Sample, into = c("Sample", "bar"),sep = 16) %>%  #按照规则取前16个字符
select(-bar) #去掉分割后不需要的bar列

可参考:盘一盘Tidyverse| 筛行选列之select,玩转列操作

Tips:

  • 1)可以先默认试一下,如2.1所示;

  • 2)使用R的帮助,一定!

三,分久必合-多列合并一列

使用unite函数, 可将多列按照“指定”分隔符合并为一列

data %>%
unite(ID_new, ID:ID2, sep = "_") %>% head()

◆ ◆ ◆ ◆ ◆

精心整理(含图版)|你要的全拿走!有备无患

Tidyverse|数据列的分分合合,爱恨情仇的更多相关文章

  1. 注解:大话AOP与Android的爱恨情仇

    转载:大话AOP与Android的爱恨情仇 1. AOP与OOP的区别 平时我接触多的就是OOP(Object Oriented Programming面向对象).AOP(Aspect Oriente ...

  2. 对json的爱恨情仇

    本文回想了对json的爱恨情仇. C++有风险,使用需慎重. 本文相关代码在:http://download.csdn.net/detail/baihacker/7862785 当中的測试数据不在里面 ...

  3. String、StringBuilder、StringBuffer的爱恨情仇

    第三阶段 JAVA常见对象的学习 StringBuffer和StringBuilder类 (一) StringBuffer类的概述 (1) 基本概述 下文以StringBuffer为例 前面我们用字符 ...

  4. pytorch和tensorflow的爱恨情仇之基本数据类型

    自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...

  5. pytorch和tensorflow的爱恨情仇之定义可训练的参数

    pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch版本:1.6.0 tensorflow版本:1.15.0 之前我们就已 ...

  6. pytorch和tensorflow的爱恨情仇之张量

    pytorch和tensorflow的爱恨情仇之基本数据类型:https://www.cnblogs.com/xiximayou/p/13759451.html pytorch版本:1.6.0 ten ...

  7. pytorch和tensorflow的爱恨情仇之参数初始化

    pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch和tensorflow的爱恨情仇之定义可训练的参数 pytorch版本 ...

  8. Menu与ActionBar的爱恨情仇

    最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...

  9. web移动端fixed布局和input等表单的爱恨情仇 - 终极BUG,完美解决

    [问题]移动端开发,ios下当fixed属性和输入框input(这里不限于input,只要可以调用移动端输入法的都包括,如:textarea.HTML5中contenteditable等),同时存在的 ...

随机推荐

  1. Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2 ( ORA-02296 RMAN-06004 )

    Failed RMAN Catalog Upgrade from 11.2.0.2 to 12.1.0.2  ( ORA-02296  RMAN-06004 ) 由于后期使用12c的数据库,需要对现有 ...

  2. React Hook挖坑

    React Hook挖坑 如果已经使用过 Hook,相信你一定回不去了,这种用函数的方式去编写有状态组件简直太爽啦. 如果还没使用过 Hook,那你要赶紧升级你的 React(v16.8+),投入 H ...

  3. Netty为什么不直接用AtomicXXX,而要用AtomicXXXFieldUpdater去更新变量呢?

    更多技术分享可关注我 前言 如果仔细阅读过Netty的线程调度模型的源码,或者NIO线程对象及其线程池的创建源码,那么肯定会遇到类似“AtomicIntegerFieldUpdater”的身影,不禁想 ...

  4. html中的字幕滚动marquee属性

    该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果,该标签是个容器标签. 语法: <marq ...

  5. Educational Codeforces Round 84 (Rated for Div. 2)

    A. Sum of Odd Integers(思维) 思路 这一题看完ans之后觉得是真简单,不过有一些地方还是要理解的. 这一题输出YES,有两个条件 kk%2 == n%2k,这个条件的意思是 k ...

  6. #VScodd集成Git Bash 命令行 #怎么把Git Bash集成到VScode

    配置 Step1. File-Preferences-Setting Step2. 搜索"terminal>integrated>shell A" Step3. 找到t ...

  7. ceph概述

                                                                            ceph概述   基础知识 什么是分布式文件系统 •   ...

  8. shell脚本实现自动压缩一天前的日志文件 ,并传到ftp服务器上

    shell脚本实现自动压缩一天前的日志文件 ,并传到ftp服务器上 naonao_127关注2人评论19401人阅读2012-06-08 11:26:16         生产环境下脚本自动备份脚本是 ...

  9. spring使用jdbc

    对于其中的一些内容 @Repository(value="userDao") 该注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例. ...

  10. UC接口文档

    UC接口文档 一.功能描述 提供同步登录.退出.注册等相关接口,可以实现用户一个账号,在一处登录,全站通行. 二.测试环境UC地址 http://s1.p5w.net/uc/ 三.相关接口 UC_AP ...