title: “GEO data analysis”
author: “yuluyang”
date: “2024-03-22”
生信技能树数据挖掘课程笔记~小洁老师授课
主要内容:
- 数据分组的内容
- 关键词的分组和多分组比较
- id map报错的原因及解决方法
- 基因组的注释流程
- 数据的行列互换及方差数值
- 画图示例代码
示例数据
library(GEOquery)
eSet = getGEO("GSE7305", destdir = '.', getGPL = F)
library(stringr)
# 紧接数据下载后
# 第一步:提取表达矩阵exp
eSet = eSet[[1]] # 要先打破列表的框架方便后续提取信息
exp <- exprs(eSet)
range(exp) # 看数据范围决定是否需要log,是否有负值,异常值
exp = log2(exp+1)
# 第二步:提取临床信息
pd <- pData(eSet)
## 要记得自己命名了哪些内容,'exp'是表达矩阵、'pd'是临床/分组信息
可以自己上GEO筛选一个芯片数据集,然后按以下流程复现一遍
只要命名方式不改变,后续作图代码可以直接copy然后run
提取后如何处理分组信息
if(F){ # 括号里是F,即不运行,这里只是示例有这种方法可供选择
# 第一种方法,有现成的可以用来分组的列
}else if(F){
# 第二种方法,眼睛数,自己生成
Group = rep(c("Disease","Normal"),each = 10) # 这个数据是很整齐排好的,前10个为`disease`,后10个为`normal`
# 如果两个组个数不一样的话咋整?
}else if(T){
# 第三种方法,使用字符串处理的函数获取分组
k = str_detect(pd$title,"Normal");table(k) # 选中信息这一列,找一个能区分组的关键词"Normal",然后`str_detect`分成`true`和`false`两组
## 记得检查`table`的结果
Group = ifelse(k,"Normal","Disease") # 对`true`、`false`结果进行分组分配
}
## 想起什么名字都可以
## 分组关系一定要对应清楚
# 需要把Group转换成因子,并设置参考水平,指定levels,对照组在前,处理组在后
Group = factor(Group,levels = c("Normal","Disease")) ## `factor()`转化为因子型向量,`levels=`指定因子的水平向量
Group
## `levels=`如果不指定的话,默认是按照字母顺序排列的
推荐使用第三种,优先考虑代码梳理
factor
因子型向量是R中一类特殊的向量类别
作用是给其他类别元素进行分组、计数,相当于统计学中分类变量,分可枚举【有序】和类别型【无序】两类
补充:如果两个组样本数量不一致
# 例如 对照组有10个,样本组15个
rep(c("control","disease"),times=c(10,15))
## 要记得检查生成的向量是不是先10个`control`再15个`disease`
rep(c("control","disease"),c(10,15))
## `times=`可以省略
## 不可以用`each=`
补充:如何检查分组设置与临床信息是否对应
# 新建一个数据框
data.frame(a=pd$title,
b=Group)
## 两列对照着看
补充:多分组里面取两个分组
# 举
标签:Group,--,library,##,分组,exp,GEO,生信,deg
From: https://blog.csdn.net/yangyulu1998/article/details/136941593