GEO数据挖掘--去掉重复基因

> rm(list = ls()) 
> load(file = "step2output.Rdata")
> #查看右侧变量
> 
> #差异分析,用limma包来做
> #需要表达矩阵和Group,不需要改
> library(limma)
Warning message:
程辑包‘limma’是用R版本4.0.3 来建造的 
> design=model.matrix(~Group)
> fit=lmFit(exp,design)
> fit=eBayes(fit)#贝叶斯检验
> deg=topTable(fit,coef=2,number = Inf)
> dim(deg)
[1] 54675     6
> head(deg)
                logFC   AveExpr         t      P.Value    adj.P.Val        B
224563_at   -3.419608 10.462003 -16.58978 4.947714e-14 2.358899e-09 21.39728
208629_s_at -1.633518 11.204696 -16.14895 8.628803e-14 2.358899e-09 20.92048
212417_at   -1.810946  8.760968 -15.16339 3.139295e-13 4.882577e-09 19.79803
201861_s_at -1.713884 11.965832 -15.06767 3.572073e-13 4.882577e-09 19.68466
208325_s_at -1.840898  9.321510 -13.60230 2.819698e-12 3.083340e-08 17.84515
203479_s_at -2.274611  7.651265 -13.43343 3.618635e-12 3.297481e-08 17.61994
> identical(rownames(deg),rownames(exp))#已按照p值列排序 不同了
[1] FALSE
> head(rownames(deg))
[1] "224563_at"   "208629_s_at" "212417_at"   "201861_s_at" "208325_s_at" "203479_s_at"
> head(rownames(exp))
[1] "1007_s_at" "1053_at"   "117_at"    "121_at"    "1255_g_at" "1294_at"  
> 
> #为deg数据框添加几列
> #1.加probe_id列,把行名变成一列
> library(dplyr)

载入程辑包:‘dplyr’

The following objects are masked from ‘package:stats’:

    filter, lag

The following objects are masked from ‘package:base’:

    intersect, setdiff, setequal, union

Warning message:
程辑包‘dplyr’是用R版本4.0.3 来建造的 
> deg <- mutate(deg,probe_id=rownames(deg))
> head(deg)
      logFC   AveExpr         t      P.Value    adj.P.Val        B    probe_id
1 -3.419608 10.462003 -16.58978 4.947714e-14 2.358899e-09 21.39728   224563_at
2 -1.633518 11.204696 -16.14895 8.628803e-14 2.358899e-09 20.92048 208629_s_at
3 -1.810946  8.760968 -15.16339 3.139295e-13 4.882577e-09 19.79803   212417_at
4 -1.713884 11.965832 -15.06767 3.572073e-13 4.882577e-09 19.68466 201861_s_at
5 -1.840898  9.321510 -13.60230 2.819698e-12 3.083340e-08 17.84515 208325_s_at
6 -2.274611  7.651265 -13.43343 3.618635e-12 3.297481e-08 17.61994 203479_s_at
> #2.加上探针注释
> #查看
> dim(ids)
[1] 41905     2
> head(ids)
   probe_id symbol
1   1053_at   RFC2
2    117_at  HSPA6
3    121_at   PAX8
4 1255_g_at GUCA1A
5   1316_at   THRA
6   1320_at PTPN21
> table(!duplicated(ids$probe_id))#无重复的    第一列probe_id

 TRUE 
41905 
> table(!duplicated(ids$symbol))#无重复的   第二列 symbol

FALSE  TRUE 
21744 20161 

去重

按symbol列去重,常见标准有3个:最大值/平均值/随机去重

方法1.随机去重

> ids = ids[!duplicated(ids$symbol),]#谁排第一个就取谁
> 
> deg <- inner_join(deg,ids,by="probe_id")#去交集
> head(deg)
      logFC   AveExpr         t      P.Value    adj.P.Val        B    probe_id  symbol
1 -1.633518 11.204696 -16.14895 8.628803e-14 2.358899e-09 20.92048 208629_s_at   HADHA
2 -1.713884 11.965832 -15.06767 3.572073e-13 4.882577e-09 19.68466 201861_s_at LRRFIP1
3 -2.274611  7.651265 -13.43343 3.618635e-12 3.297481e-08 17.61994 203479_s_at   OTUD4
4 -1.935657  8.628444 -13.04331 6.501205e-12 3.554534e-08 17.08858   203391_at   FKBP2
5 -1.893808  8.896532 -12.38173 1.812689e-11 6.607251e-08 16.15073   205457_at   ILRUN
6 -1.691681 10.302132 -12.00890 3.290947e-11 1.124578e-07 15.60094 201392_s_at   IGF2R
> nrow(deg)
[1] 20161

方法2.求平均值

> #rm(list = ls())
> #load("step2output.Rdata")
> exp3 = exp[ids$probe_id,]
> exp3[1:4,1:4]
          GSM1366348 GSM1366349 GSM1366350 GSM1366351
1053_at     8.932805   8.679543   8.625015   8.637085
117_at      9.383421   8.605809   9.462774   9.898573
121_at      7.916751   8.500635   8.258467   8.553656
1255_g_at   5.085221   2.414033   1.718570   4.311794
> # 有重复的基因,求平均值
> s = unique(ids$symbol[duplicated(ids$symbol)]);length(s)
[1] 10753
> exp4 = sapply(s, function(i){
+   colMeans(exp3[ids$symbol==i,])
+ })
> dim(exp4)
[1]    22 10753
> exp4 = t(exp4)
> dim(exp4)
[1] 10753    22
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容