凡是Excel能实现的数据操作,理论上R语言也可以

两个月前的一个学徒作业:绘图本身很简单但是获取数据很难,完成率超级低,仅仅接到了不到十个邮件,而且有3个人做的是错的!!超级尴尬,其中有一个错误很明显,就是自以为是的排序,然后比对肿瘤组织和配对的正常组织的表达量,其实呢,排序错误会导致配对失败。

下面是7月优秀学员投稿

下面让优秀学徒具体讲解一下:

rm(list = ls())
options(stringsAsFactors = F)
library(ggstatsplot)
load('dat_input22.Rdata')

目前我的 dat 数据是这样的,可以看到同一个病人是有肿瘤组织和配对的正常组织的表达量的,而且呢,理论上是每一行一个样品的表达量信息:

对 pid 这一列排序后,group 这一列应该是相对应的奇数时是肿瘤组,偶数正常组。这时候就出现了问题,排列的没有规律性,如下:

后面的数据就无法取,于是思考了一下两列的排序问题。(起初我并没有想到这一点,而是采用了其它复杂的方法完成了这个目标。但是jimmy老师点醒了我:凡是Excel能实现的数据操作,理论上R语言也可以,其实就是按照两列元素进行排序)

本来就只是一个简单的排序问题,随便搜搜就会有很好的答案,例如这样

df = dat
df = df[order(df[,4],df[,3],decreasing=TRUE),]

也就是说上面的代码呢,首先按照第4列排完序了,然后再来排一下第3列,我的数据也就得到了解决。

排列的整整齐齐:

并且后续的分析只需要在正常组和原位肿瘤组织中,不需要转移的肿瘤的这两个数据,应该删掉就行:

删除了多余的转移肿瘤的数据之后其实就完美了(都是那多出来的四个数据的问题,不然,第一次按照一列排序就可以很好)

之后就可以分别取出肿瘤样本和正常样本对应的 TP53 的表达量:

d=cbind(d[seq(1,nrow(d),by=2),],d[seq(2,nrow(d),by=2),])
identical(dat[,4],dat[,8])
head(dat)
normal=dat[,6];tumor=dat[,2]

这时候我的数据就结束了。

但是,

人们有时候真是有些奇奇怪怪的要求,索性研究一下排序问题。

哈哈,其实没有了,排序哪有什么问题,没有遇到具体问题时,哪会有排序的需求。下面还是让jimmy老师给大家讲解排序的需求吧:

扩展 筛选基因

我们读取一个表达矩阵文件,这个 GSE75688_GEO_processed_Breast_Cancer_raw_TPM_matrix.txt.gz 你应该是知道如何下载的

rm(list=ls())
options(stringsAsFactors = F)
a=read.table('GSE75688_GEO_processed_Breast_Cancer_raw_TPM_matrix.txt.gz',
             header = T)
a[1:4,1:4]
tail(a[,1:4])

表达矩阵如下:

> a[1:4,1:4]
             gene_id gene_name      gene_type BC01_Pooled
1 ENSG00000000003.10    TSPAN6 protein_coding        2.33
2  ENSG00000000005.5      TNMD protein_coding        0.00
3  ENSG00000000419.8      DPM1 protein_coding       60.70
4  ENSG00000000457.9     SCYL3 protein_coding       47.93
> tail(a[,1:4])
         gene_id  gene_name gene_type BC01_Pooled
57910 ERCC-00168 ERCC-00168      ERCC        0.00
57911 ERCC-00170 ERCC-00170      ERCC        0.00
57912 ERCC-00171 ERCC-00171      ERCC        0.00
57913     SPIKE1        EC2  SPIKE_IN    14940.70
57914     SPIKE2       EC15  SPIKE_IN      985.82
57915     SPIKE3       EC18  SPIKE_IN        0.00

可以看到前面的3列是基因信息,后面的才是表达矩阵的各个样品表达量信息。

ids=a[,1:3]
head(ids)
a=a[,4:ncol(a)]
a[1:4,1:4]
kp=rowSums(a>1) > 20
table(kp)
a=a[kp,]
ids=ids[kp,]
rownames(a)=ids[,1]
a[1:4,1:4]

虽然说第一列是ensembl的基因ID,第二列是我们想要的基因symbol。如果这个时候,我们强行把   rownames(a)=ids[,2] 就会报错,如下:

可以看到有大量的基因出现了多次,因为它们其实对应着不同的ensembl的基因ID,但是我们最后仍然是想要基因symbol。这个时候,我们就可以应用起来了我们的两列排序技巧:

可以看到, 我们的ids数据框,首先是按照基因的symbol排序了,然后按照基因表达量排序了,所以可以简单的去冗余就拿到了合适的基因。全部的代码如下:

ids$median=apply(a,1,median)
ids=ids[order(ids$gene_name,ids$median,decreasing = T),]
ids=ids[!duplicated(ids$gene_name),]
a=a[ids$gene_id,]
rownames(a)=ids[,2]

这样,你的表达量矩阵,就是以唯一的基因symbol命名的啦。

虽然说两个不同的ensembl的基因ID,对应着同样的基因symbol,但是我们的挑选策略是,仅仅是保留表达量大的那个ensembl的基因ID。

如果你要问为什么两个不同的ensembl的基因ID会对应着同样的基因symbol

只能说是因为id本来就不统一,而且基因数量那么多,是超出人类认知范围的!这些知识点统称为生物信息学背景知识咯,甚至可以写一本书:

为什么要转换id?
有多少种ID?
什么id权威?
id是一一对应的吗?
ID是什么生信组织维护?
id有版本吗?
id一定正确吗?
什么情况下选择什么id?
不同数据库下载的id对应表一定一样吗?

写到最后

如果你也想开启自己的生物信息学数据处理生涯,但是自学起来困难重重,还等什么呢,赶快行动起来吧!参加我们生信技能树官方举办的学习班:

生信技能树的粉丝都知道我们有一个全国巡讲的良心学习班,口碑爆棚,生物信息学入门省心省时省力!先看看大家的反馈吧:

(0)

相关推荐

  • 从TCGA下载的甲基化数据格式解读

    谢京合关注 0.5022020.10.28 17:56:10字数 844阅读 600 我的天,第一次接触甲基化数据,真是令人头大. 那就先从TCGA上下载某一种癌症的甲基化数据开始吧. 1.下载. 数 ...

  • Gene ID 转换工具

    写在前面 我们在研究基因的时候,尤其是在研究高通量数据分析,经常会碰到我们研究的这个数据的基因ID不是我们通常意义上的基因名.拿TCGA的数据举例,TCGA RNA-seq的数据比对的基因是ID是En ...

  • 临床大数据文献|使用R语言进行临床数据管理

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO, SEER数据挖掘. 临床大数据研究系列文献分享,由浙江大学章仲恒老师特别撰写的临床 ...

  • Excel提取不重复数据的三种操作

    Excel提取不重复数据的三种操作

  • Excel实现每日明细数据按月汇总,你会这样操作吗?

    Excel情报局 Excel职场联盟 生产挖掘分享Excel基础技能 Excel爱好者大本营 用1%的Excel基础搞定99%的职场问题 做一个超级实用的Excel公众号 Excel是门手艺玩转需要勇 ...

  • 如何用pandas对excel中的文本数据进行操作

    excel进行数据的操作最便捷的库是pandas,但是如何使用pandas对excel中的文本进行清洗,这是一个很技巧性的工作.之前常见的思路是操作结果保存到新的excel文件中,这会让代码可读性和清 ...

  • excel表格怎么筛选数据如何操作

    操作方法 01 打开excel表格,选中数据第一行全部,然后在界面顶上菜单栏中选择"开始"进入,末尾位置点击"自动筛选"当看到表格中所选数据的格子里出现了箭头就 ...

  • Excel VBA Range单元格操作实例

    四.Range操作 4.2取得最后一个非空单元格 xlDown/xlToRight/xlToLeft/xlUp Dim ERow as Long Erow=Range("A" &a ...

  • 如何用Excel获取实时股票数据

    #如何用excel获得股票实时数据# 首先找一个提供股票数据的网站,各种财经网站都有股票数据,我们以东方财富网为例: 沪深A股数据,我们在谷歌浏览器中查看真实网址: 找到jQuery行,对应的就是股票 ...

  • Excel中的身份证数据,应该如何科学处理

    已经从事工作的朋友们,想必会经常和身份证号码打交道,今天我们就聊聊关于[excel身份证]那些事. (先看看视频get拆分身份证数据技巧) 大家好,我的名字叫去力果果,我的身份证号码是↓ 相信大家也看 ...

  • Excel如何快速给数据添加分隔符

    有时候我们根据一些特殊的需求,需要给数据添加上分隔符,如何批量添加呢,一起来看看操作方法吧. 1.当前要给表格中的数据添加上分隔符. 2.分隔符就是英文状态下的冒号. 3.快速填充冒号之后要与数据对齐 ...