专栏首页生信补给站R-apply| 基因表达量批量二分类,Get!(修正版)

R-apply| 基因表达量批量二分类,Get!(修正版)

生信或者数据挖掘中经常会遇到需要把连续的表达量数据转为分类变量。比如基因表达量二分类进行后续的生存分析。

一 读入数据

读入TCGA的表达量数据,截取部分数据进行示范

#TCGA的表达量数据
#setwd()
data <- read.csv("Expr_median.csv",header=TRUE,row.names=1,check.names=FALSE)
data <- as.data.frame(t(data))data[1:4,1:4]
  • row.names=1 :读入数据的第一列作为行名
  • check.names=FALSE:标题保持原样

可以自行试一下,分别去掉这两个参数,然后比较下数据的差异

二 批量转化

1 ifelse转化单一列

#将TCGA-97-7938-01A根据medain转为 高 低
data1 <- data
data1[,"ENSG00000000003.13"] <- ifelse(data1[,"ENSG00000000003.13"] > median(data1[,"ENSG00000000003.13"]),"High","Low")
data1[1:4,1:4]

可以看到ENSG00000000003.13基因的表达量已经转为高 低 二分类了。

分段阈值:还可以是均值,四分卫,10%,或者具体数值
#按照均值分
data1[,"ENSG00000000460.15"] <- ifelse(data1[,"ENSG00000000460.15"] > mean(data1[,"ENSG00000000460.15"]),"High","Low")
#按照75%分
data1[,"ENSG00000000419.11"] <- ifelse(data1[,"ENSG00000000419.11"] > quantile(data1[,"ENSG00000000419.11"],0.75),"High","Low")
#按照具体数值分
data1[,"ENSG00000000457.12"] <- ifelse(data1[,"ENSG00000000457.12"] > 10,"High","Low")
data1[1:4,1:4]

2 批量转化

当列数较少时,可以按照上述方式,一个个完后分类。当太多时,需要批量完成!

#使用apply,批量完成转化
data2 <- data
data2 <- apply(data2, 2, function(x) {ifelse(x >= median(x), "hign", "low")})
head(data2)

批量已完成,省时省力!

3 for循环完成

data3 <- data
for (i in colnames(data3)){
  data3[,i] <- ifelse(data3[,i] >= median(data3[,i]),"high","low")
}

实现方式很多,根据个人习惯,自取!

本文分享自微信公众号 - 生信补给站(Bioinfo_R_Python),作者:MJ

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何高效地学好 R?

    本文由知乎著名答主黄宝臣原创,CDA数据分析师已获得授权 学R主要在于5点三阶段: 第一阶段有一点:基础的文件操作(read.*,write.*)、数据结构知...

    CDA数据分析师
  • FreeSql.DbContext ,向"不是真正的 ORM" 说拜拜

    FreeSql 发展到现在,已经有两种稳定的开发模式,以下先简单带过一下。后面才是本文的主题。

    梁规晓
  • FreeSql.DbContext ,向"不是真正的 ORM" 说拜拜

    FreeSql 发展到现在,已经有两种稳定的开发模式,以下先简单带过一下。后面才是本文的主题。

    梁规晓
  • k8s实践(四):Controller

    Kubelet是唯一一直作为常规系统组件来运行的组件,它把其他组件作为pod来运行。

    loong576
  • 进阶!MyBatis-Plus(基于 Springboot 演示)

    这一篇从一个入门的基本体验介绍,再到对于 CRUD 的一个详细介绍,在介绍过程中将涉及到的一些问题,例如逐渐策略,自动填充,乐观锁等内容说了一下,只选了一些重要...

    BWH_Steven
  • C++20新特性个人总结

    concept乃重头戏之一,用于模板库的开发。功能类似于C#的泛型约束,但是比C#泛型约束更为强大。

    用户7886150
  • MySQL中xtrabackup备份恢复全攻略(r12笔记第11天)

    XtraBackup是Percona推出的一款备份工具,算是对于mysqldump的一个补充。对于大批量数据的导入使用mysqldump会出现一定的瓶颈,...

    jeanron100
  • Kotlin入门教程,快使用Kotlin吧

    数组用Array类实现,和Java不同的地方在于,Array类有一个size属性表示数组长度,还有get和set方法,但是也可以使用array[position...

    用户2802329
  • Pandas处理时序数据(初学者必会)!

    时序数据是指时间序列数据。时间序列数据是同一统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以...

    Datawhale

扫码关注云+社区

领取腾讯云代金券