R-apply| 基因表达量批量二分类,Get!(修正版)
时间:2022-07-22
本文章向大家介绍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")
}
实现方式很多,根据个人习惯,自取!
- 【LeetCode 20】关关的刷题日记45 – Valid Parenthese
- 1819: [JSOI]Word Query电子字典
- 【推荐】C#线程篇---Task(任务)和线程池不得不说的秘密(5.2)
- javascript 事件基础
- 算法模板——sap网络最大流 3(递归+邻接矩阵)
- 从Hash Killer I、II、III论字符串哈希
- angularjs 缓存详解
- 算法模板——线段树7(骰子翻转问题)
- 2729: [HNOI2012]排队
- 算法模板——sap网络最大流 2(非递归+邻接表)
- 算法模板——sap网络最大流 1(非递归+邻接矩阵)
- webpack学习(四)extract-text-webpack-plugin插件
- Codevs2822 爱在心中
- 3098: Hash Killer II
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一文帮你理解整个 SRE 运维体系!
- 拆解式解读如何用飞桨复现胶囊神经网络(Capsule Network)
- 我用飞桨Parakeet合成小姐姐声音帮我“读”论文
- 【5分钟玩转Lighthouse】搭建WordPress博客
- vue接入腾讯地图(一)【点击事件】
- Redis文件事件&时间事件处理机制
- Redis持久化策略
- Redis二进制安全的原理
- 面试必备 Vue 知识点
- 数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试
- CPU有个禁区,内核权限也无法进入!
- 分布式 | DBLE 3.20.07.0 来啦!
- C语言三剑客之《C陷阱与缺陷》一书精华提炼
- Linux进程间通信(上)之管道、消息队列实践
- FPGA上电时序