【生信】R語(yǔ)言id轉(zhuǎn)換兩種方法(附代碼)

代碼都是直接給出來(lái)了
需要修改的地方我進(jìn)行了標(biāo)記
只要修改一下都能直接用

方法一:下載平臺(tái)數(shù)據(jù)以得到對(duì)應(yīng)信息

首先進(jìn)入官網(wǎng)https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi活鹰,在這里我以GSE26682為例,點(diǎn)擊紅圈中的鏈接

在這里插入圖片描述
然后下載soft.gz文件(一般是下面一個(gè))
在這里插入圖片描述

首先在分析前需要加載幾個(gè)必要的包,可以通過(guò)以下方法下載

if (!requireNamespace("BiocManager", quietly = TRUE)) { 
  install.packages("BiocManager",ask = F, update = F)
}

BiocManager::install("GEOquery")
BiocManager::install("limma")
BiocManager::install("affy") 

只有一個(gè)平臺(tái)

gse <- getGEO("你的GSE序號(hào)", destdir = ".",
                getGPL = T,
                AnnotGPL = T) # 此處更改GSE序號(hào)

gse[[1]]

data <- read.csv("表達(dá)矩陣的地址") # 此處更改表達(dá)矩陣地址 

# 表達(dá)矩陣也可以通過(guò)這個(gè)方法獲得
# exp <- exprs(gse[[1]])  

GPL <- getGEO(filename = "剛剛下載的soft.gz文件的地址") # 此處增加soft.gz文件地址

gpl <- GPL@gpls[[1]]@dataTable@table
data <- aggregate(.~ID_REF, data, mean) # 對(duì)數(shù)據(jù)進(jìn)行去重,重復(fù)的取平均

colnames(gpl) 
ids <- gpl[, c(a, b)] # 此處將a和b更改為前面列出的列名中的id和gene symbol的位置
colnames(ids) <- c("ID_REF", "symbol") # 此處將列名與表達(dá)矩陣中的列名進(jìn)行統(tǒng)一,不一定是ID_REF和symbol周伦,需要按照對(duì)應(yīng)的進(jìn)行修改
re <- merge(data, ids, by.x = "ID_REF", by.y = "ID_REF") # 此處同理,不一定是ID_REF

re <- re[!apply(is.na(re) | re$symbol == "", 1, all), ] # 刪除空白值
re <- na.omit(re) # 去除na值
re$symbol <- data.frame(sapply(re$symbol,
                                 function(x)unlist(strsplit(x, "http:///"))[1]),
                          stringsAsFactors = F)[, 1]
                          
write.csv(re, file = "給文件取個(gè)名.csv") # 保存文件

有兩個(gè)平臺(tái)

library(GEOquery)
library(limma)
library(affy)
library(dplyr)

gse <- getGEO("你的GSE序號(hào)", destdir = ".",
                getGPL = T,
                AnnotGPL = T) # 此處更改GSE序號(hào)

fdata_1 <- fData(gse[[1]])
fdata_2 <- fData(gse[[2]])

sampleNames_1 <- sampleNames(gse[[1]])
sampleNames_2 <- sampleNames(gse[[2]])

gene_1 <- fdata_1[, c("ID", "gene_symbol")] # 將fdata_1中的 “id”列和“gene_symbol”列進(jìn)行提取,注意:可能叫ID_REF娃胆,不一定就叫“id”

gene_1$gene_symbol <- data.frame(sapply(gene_1$gene_symbol,
                                               function(x)unlist(strsplit(x, "http://"))[1]),
                                        stringsAsFactors = F)[, 1]
gene_1 <- na.omit(gene_1)

gene_2$gene_symbol <- data.frame(sapply(gene_2$gene_symbol,
                                               function(x)unlist(strsplit(x, "http://"))[1]),
                                        stringsAsFactors = F)[, 1]
                                      
fdata_2 <- na.omit(fdata_2)

gene_2 <- fdata_2[, c("ID", "gene_symbol")] # 將fdata_1中的 “id”列和“gene_symbol”列進(jìn)行提取,注意:可能叫ID_REF等曼,不一定就叫“id”

gene_1 <- gene_1[!apply(is.na(gene_1) | gene_1$gene_symbol == "", 1, all), ]
gene_2 <- gene_2[!apply(is.na(gene_2) | gene_2$gene_symbol == "", 1, all), ]

gene_total <- rbind(gene_1, gene_2)
index_gene_total <- duplicated(gene_total$ID)
gene_total <- gene_total[!index_gene_total, ] # 去重里烦,只保留第一個(gè)

data <- read.csv("表達(dá)矩陣的地址")

# 表達(dá)矩陣也可以通過(guò)這個(gè)方法獲得
# exp <- exprs(gse[[1]])  

colnames(gene_total) <- c("ID_REF", "gene_symbol") # 此處將列名與表達(dá)矩陣中的列名進(jìn)行統(tǒng)一,不一定是ID_REF和symbol禁谦,需要按照對(duì)應(yīng)的進(jìn)行修改
re <- merge(data, gene_total, by.x = "ID_REF", by.y = "ID_REF")

write.csv(re_1, file = "給他取個(gè)名.csv")

注意事項(xiàng)

gene assignment 和 gene symbol的關(guān)系

有時(shí)候gene symbol會(huì)在gene assignment里面胁黑,需要我們自行進(jìn)行提取,這時(shí)候我么可以利用這個(gè)結(jié)構(gòu)(這個(gè)是需要自己理解一下代碼基礎(chǔ)用法的)州泊,只要改一下第二行最后方框里面的數(shù)字就可以提取“//”這個(gè)符號(hào)前面的還是后面的內(nèi)容


gene_2$gene_symbol <- data.frame(sapply(gene_2$gene_symbol,
                                               function(x)unlist(strsplit(x, "http://"))[1]),
                                        stringsAsFactors = F)[, 1]

gene symbol中存在空格的問(wèn)題

可以用一下的參數(shù)進(jìn)行更改列名(需要改一下名字等等)

names(fdata_2)[names(fdata_2) == "gene_assignment"] <- "gene_symbol"

使用bitr()函數(shù)

這是我在最開(kāi)始學(xué)id轉(zhuǎn)換時(shí)候用的最多的丧蘸,因?yàn)樗芊奖悖挥孟螺d什么亂七八糟的文件遥皂,對(duì)于我家這個(gè)很爛的網(wǎng)絡(luò)很有利力喷,但是有個(gè)致命的缺點(diǎn):不一定能對(duì)所有的id進(jìn)行轉(zhuǎn)換,也就是說(shuō)存在一個(gè)“正確率”的問(wèn)題演训,這樣的話弟孟,最后得出的結(jié)論也就存在一定的誤差,這樣就不太符合科研工作者嚴(yán)謹(jǐn)?shù)膽B(tài)度吧样悟,所以==不太建議使用==7髂肌!窟她!
只有在走投無(wú)路時(shí)候再使用陈症!

加載包

library(clusterProfiler)
library(org.Hs.eg.db)

看一下這個(gè)R包里面提供哪幾種數(shù)據(jù)類型的下載方式

keytypes(org.Hs.eg.db)

開(kāi)始轉(zhuǎn)換工作

ids = rownames(exp)
ids = as.data.frame(ids)
colnames(ids) = "ID" 

result <- bitr(ids$ID,  # 數(shù)據(jù)框
      fromType = "PMID",   # 你的ID的數(shù)據(jù)類型
      toType = c("SYMBOL","ENSEMBL"),  # 轉(zhuǎn)化的數(shù)據(jù)類型
      OrgDb = org.Hs.eg.db)  # org.Hs.eg.db——人類
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市礁苗,隨后出現(xiàn)的幾起案子爬凑,更是在濱河造成了極大的恐慌,老刑警劉巖试伙,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘁信,死亡現(xiàn)場(chǎng)離奇詭異于样,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)潘靖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門穿剖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人卦溢,你說(shuō)我怎么就攤上這事糊余。” “怎么了单寂?”我有些...
    開(kāi)封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵贬芥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我宣决,道長(zhǎng)蘸劈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任尊沸,我火速辦了婚禮威沫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洼专。我一直安慰自己棒掠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布屁商。 她就那樣靜靜地躺著烟很,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棒假。 梳的紋絲不亂的頭發(fā)上溯职,一...
    開(kāi)封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音帽哑,去河邊找鬼。 笑死叹俏,一個(gè)胖子當(dāng)著我的面吹牛妻枕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粘驰,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼屡谐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蝌数?” 一聲冷哼從身側(cè)響起愕掏,我...
    開(kāi)封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎顶伞,沒(méi)想到半個(gè)月后饵撑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體剑梳,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年滑潘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垢乙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡语卤,死狀恐怖追逮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粹舵,我是刑警寧澤钮孵,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站眼滤,受9級(jí)特大地震影響油猫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柠偶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一情妖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诱担,春花似錦毡证、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至摇邦,卻和暖如春恤煞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背施籍。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工居扒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丑慎。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓喜喂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親竿裂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子玉吁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容