TCGA | 以项目方式管理代码数据 以及 数据读取存储

简介: TCGA | 以项目方式管理代码数据 以及 数据读取存储

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/8S7c3gZZAKbDrfWmrLnMfw


以项目的方式管理R代码和文件,可以很大程度规避  1)工作路径不对,2)找不到文件 ,3)代码和文件不对应 ,等常见的问题。

RStudio是一款流行的R语言IDE(开发者集成环境),在安装Rstudio之前一定要先安装R软件,本文简单的介绍如何使用Rstudio进行项目管理。


一  项目式管理代码 数据


1.1 新建New Project

打开Rstudio,点击左上角箭头所示的位置,选择New Directory,选择New Project

(或者File --- New Project --- New Directory --- New Project)

1.2 设置路径

点击 Browse 设置项目路径,然后填写工作路径,可以选择是否打开一个新的session

1.3 新建R script

然后点击Rstudio左上角的+,选择 R script ,,(R Markdown 和 R Presentation后面会介绍

以上,就新建了一个项目。


二 数据读取 存储


数据分析当然首先需要数据,之前的推文中用到了几种,比如

  • 载入R 或者 R包的内置数据集;
  • 通过matrix或者data.frame等构建简单的数据集 ;
  • 读取文件获取数据集 。


1 读取表达数据并转换Ensembl_ID

TCGA数据挖掘 | Xena - TCGA数据下载分享的是下载乳腺癌的数据,此处换为LAML,下载方式一样!

为啥?因为LAML样本少,读取快 ̄□ ̄||!

2 )读取表达量数据

rm(list = ls()) #一键清空
#载入R包
library(openxlsx)
library(tidyverse)
#读取表达量数据 TCGA-LAML.htseq_counts.tsv
fpkm <- read.table("TCGA-LAML.htseq_counts.tsv",sep = "\t" , header = T,
                  #row.names = "Ensembl_ID",
                  stringsAsFactors = FALSE ,
                  check.names = FALSE)
fpkm[1:4,1:4]

一些常用参数选项:

  • header:逻辑值,表示文件的第一行是否包含变量的标题;
  • sep:表示在同一行内,用于分割变量值的分隔符;
  • row.names:字符串类型的向量,用于指定行的名称。可以是一个向量,包含所有数据行的名称,也可以指定一个字符串,该字符串是文件的列名,那么数据集使用该列的值作为行的名称。
  • na.strings:用于表示缺失值的字符串向量,在读取数据时,当变量值匹配这些字符串中的任意一个时,把变量的值转换为NA。
  • quote:用于对有特殊字符的字符串划定界限的符号,默认值是双引号或单引号。
  • stringAsFactors:逻辑值,默认值是TRUE,用于指定是否把字符向量转换为因子。
  • check.names :逻辑值,默认值为TRUE,它会自动将变量名转换成唯一的字符型向量 。


需要注意列名,不设置`check.names`的话, 1 会变成 “X1” ,TCGA-AB-2949-03B会变成“TCGA.AB.2949.03B”,一些不识别的符号(如空格,%,#等)也会自动变化,需要特别注意。


2.读取probeMap文件,转换Ensembl_ID

下载表达矩阵的时候,记得下载对应的probeMap文件,方便将Ensembl_ID转为常见的基因

symbol。
#gencode.v22.annotation.gene.probeMap
probeMap <- read.table("gencode.v22.annotation.gene.probeMap",sep = "\t" , header = T,
                  stringsAsFactors = FALSE ,
                  check.names = FALSE)
probeMap[1:4,1:4]
expr <- fpkm %>%
 inner_join(probeMap, by = c("Ensembl_ID" = "id")) %>%
 select(gene , starts_with("TCGA") )
   gene TCGA-AB-2949-03B TCGA-AB-2918-03A TCGA-AB-2943-03A
1 TSPAN6         5.129283         3.700440         5.209453
2   TNMD         1.000000         1.000000         0.000000
3   DPM1         9.972980         9.885696         9.868823
4  SCYL3         9.980140        10.052568        10.965784

详细的用法可查看:

Tidyverse| XX_join :多个数据表(文件)之间的各种连接

盘一盘Tidyverse| 筛行选列之select,玩转列操作


3. 处理临床和随访数据

注意临床数据和随访数据分开的!

#临床数据
cli <- read.table("TCGA-LAML.GDC_phenotype.tsv", header = T,sep = "\t" ,
                      stringsAsFactors = FALSE)
cli[1:4,1:4]
#随访数据
surv <- read.table("TCGA-LAML.survival.tsv", header = T,
                  stringsAsFactors = FALSE)
surv[1:4,1:4]
#结合,提取部分列
cli_surv <- cli %>%
 inner_join(surv,by = c("submitter_id.samples" = "sample")) %>%
 select(submitter_id.samples,age_at_index.demographic,gender.demographic,
        tumor_grade.diagnoses,tumor_stage.diagnoses,OS,OS.time)
head(cli_surv)


4. 数据保存之 write和save

write 输出文件:可以保存为多种格式,只能保存一个文件

save 保存数据:可以保存多个文件,使用时直接load即可,保存关键或者耗时的中间文件。

write.xlsx(cli_surv,"1-cli_surv.xlsx")
write.csv(cli_surv,"1-cli_surv.csv",row.names = FALSE)
write.table(cli_surv,"1-cli_surv.txt",row.names = FALSE)
save(expr,cli,surv,cli_surv ,file = "Step1_data_join.RData")
#load("Step1_data_join.RData")


使用R Project 管理代码和数据,加上详细的注释,可以大大减少后面找数据,分析代码的时间!

相关文章
|
7月前
|
存储 SQL 数据挖掘
【源码解析】使用 Pandas 优化数据存储:深入解析 Block 合并机制
【源码解析】使用 Pandas 优化数据存储:深入解析 Block 合并机制
|
8月前
第六章 利用数组处理批量数据
第六章 利用数组处理批量数据
44 0
|
数据采集 机器学习/深度学习 算法
②数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
876 0
②数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
|
8月前
|
存储 分布式计算 分布式数据库
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
81 0
|
SQL Java 关系型数据库
从系统报表页面导出20w条数据到本地只用了4秒,我是如何做到的
最近有个学弟找到我,跟我描述了以下场景: 他们公司内部管理系统上有很多报表,报表数据都有分页显示,浏览的时候速度还可以。但是每个报表在导出时间窗口稍微大一点的数据时,就异常缓慢,有时候多人一起导出时还会出现堆溢出。 他知道是因为数据全部加载到jvm内存导致的堆溢出。所以只能对时间窗口做了限制。以避免因导出过数据过大而引起的堆溢出。最终拍脑袋定下个限制为:导出的数据时间窗口不能超过1个月。
|
存储 移动开发 关系型数据库
R语言-rhdf5解析hdf5文件(.h5)展示文件组织结构和数据索引实现
本文简单示例了在R语言如何使用 `rhdf5` 软件包解析 .h5 文件的代码过程
642 0
|
存储 数据挖掘 索引
【python数据分析】数据如何进行合并
数据的合并 在拥有了数据基本筛选能力后,我们还要有更加nb的操作,接下来就学习如何利用Pandas合并多个DataFrame数据,以及筛选我们心仪的数据。在数据合并里面主要讲两个函数的用法
【python数据分析】数据如何进行合并
|
数据采集 自然语言处理 算法
①数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
468 0
①数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
|
前端开发
两个数组数据的高效合并方案
作为一个前端,服务器返回的数据易用,能极大的提升开发效率。 能一个接口提供的数据,就不要用去调用两次或者更多网络请求,然后进行数据合并。 然而,理想和现实两者,现实总是找我,感觉不到理想对的温暖。
286 0
两个数组数据的高效合并方案
|
存储 SQL 缓存
存储一对一源码数据,可以使用哪些工具
使用图形数据库,一对一源码可以将数据用图片的形式进行存储,而且它使用了灵活的图形模型,可以部署到多台服务器上。

热门文章

最新文章