Tidyverse|数据列的分分合合,爱恨情仇
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|数据列的分分合合,爱恨情仇的更多相关文章
- 注解:大话AOP与Android的爱恨情仇
转载:大话AOP与Android的爱恨情仇 1. AOP与OOP的区别 平时我接触多的就是OOP(Object Oriented Programming面向对象).AOP(Aspect Oriente ...
- 对json的爱恨情仇
本文回想了对json的爱恨情仇. C++有风险,使用需慎重. 本文相关代码在:http://download.csdn.net/detail/baihacker/7862785 当中的測试数据不在里面 ...
- String、StringBuilder、StringBuffer的爱恨情仇
第三阶段 JAVA常见对象的学习 StringBuffer和StringBuilder类 (一) StringBuffer类的概述 (1) 基本概述 下文以StringBuffer为例 前面我们用字符 ...
- pytorch和tensorflow的爱恨情仇之基本数据类型
自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...
- pytorch和tensorflow的爱恨情仇之定义可训练的参数
pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch版本:1.6.0 tensorflow版本:1.15.0 之前我们就已 ...
- pytorch和tensorflow的爱恨情仇之张量
pytorch和tensorflow的爱恨情仇之基本数据类型:https://www.cnblogs.com/xiximayou/p/13759451.html pytorch版本:1.6.0 ten ...
- pytorch和tensorflow的爱恨情仇之参数初始化
pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch和tensorflow的爱恨情仇之定义可训练的参数 pytorch版本 ...
- Menu与ActionBar的爱恨情仇
最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...
- web移动端fixed布局和input等表单的爱恨情仇 - 终极BUG,完美解决
[问题]移动端开发,ios下当fixed属性和输入框input(这里不限于input,只要可以调用移动端输入法的都包括,如:textarea.HTML5中contenteditable等),同时存在的 ...
随机推荐
- Java并发编程锁系列之ReentrantLock对象总结
Java并发编程锁系列之ReentrantLock对象总结 在Java并发编程中,根据不同维度来区分锁的话,锁可以分为十五种.ReentranckLock就是其中的多个分类. 本文主要内容:重入锁理解 ...
- 《java编程思想》对象导论
1.抽象过程 所有编程语言都提供抽象机制.可以认为,人们所能够解决的问题的复杂性直接取决于抽象的类型和质量,所谓的'类型'是指“所抽象的是什么?”汇编语言是对底层机器的轻微抽象. java的基本 特性 ...
- MATLAB GUI设计(1)
一.新建GUI 1.命令行窗口输入 guide会出来如下界面,可以新建空白GUI,也可以打开已有GUI 2.通过工具栏新建 二.数据传递例子 1.添加输入框按钮,设置尺寸大小,内容,格式,标签 2.复 ...
- Activiti网关--排他网关
排他网关 1.什么是排他网关 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策. 当流程执行到这个网关,所有分支都会判断条件是否为true,如果为 true 则执行该分 ...
- 实验四 数据查询3-group by等
实验四 数据库查询 一. 实验内容: 1. Group by语句 2. Having 语句 3. Order by语句 4. Limit语句 5. Union语句 6. Handler语句 二. ...
- PTA | 1016 部分A+B (15分)
正整数 A 的"DA(为 1 位整数)部分"定义为由 A 中所有 DA 组成的新整数 PA.例如:给定 A=3862767,DA=6,则 A 的"6 部分"PA ...
- Mysql千万级记录表分表策略
目前,比较流行的分表为2倍扩容. 表A(id, name, age, sex) 基于自增id分表, 通过触发器先同步A到B, 程序通过mod 2操作数据,然后drop掉触发器,在 删除两个A表的偶数i ...
- 一个关于HttpClient的轮子
由于本文较长,需要耐住性子阅读,另外本文中涉及到的知识点较多,想要深入学习某知识点可以参考其他博客或官网资料.本文也非源码分析文章,示例中的源码大多是伪代码和剪辑过的代码示例,由于该轮子为公司内部使用 ...
- 深入理解== 和 equals 的本质区别
简介 初学者常常被"= =“和‘equals ’所折磨,为什么,因为他们的大概意思相同,都是比较两个对象是否相等,而又不搞不清他们的具体比较两个对象相等的原理是什么,所以经常搞混淆,接下来我 ...
- java添加对象成功后想知道当前添加对象的id
我使用的是springboot Mybatis写的项目,结构如下 mapper.xml(以下2个属性必须要有,主键id 一般是自动生成的) mapper.java (注意新增的返回值不需要,一般情况 ...