一、數(shù)據(jù)讀取
在利用R處理數(shù)據(jù)時根悼,發(fā)現(xiàn)數(shù)據(jù)會有一些缺失挤巡,這時R就會報錯
image.png
skip=1
這個函數(shù)跳過第一行糊肤,但大多數(shù)據(jù)并不是僅僅只有第一行缺數(shù)據(jù)椎咧,這時我們可以利用fill=T
來填補(bǔ)空余的數(shù)據(jù)把介。Go <- read.table("~/bulk_RNA/merge_bulk_RNA/GO/new.Annot.txt",head=T,sep="\t",fill = T)
這個時候就可以正常讀入了,一些無數(shù)據(jù)的空就以空格填補(bǔ)了脚牍。
二诸狭、數(shù)據(jù)處理
1君纫、數(shù)據(jù)拆分
image.png
image.png
就是將每一個symbol號與一個GO_ID號相對應(yīng)驯遇,這樣方便后期做富集分析,我們對數(shù)據(jù)做以下處理:
a.將GO.Compoment按照蓄髓;分割
# 初始化一個新的數(shù)據(jù)框
new_GO_term_BP <- data.frame(
Column1 = character(0),
Column2 = character(0),
Column3 = character(0)
)
# 遍歷原始數(shù)據(jù)框的每一行
for (i in 1:nrow(GO_term_BP)) {
# 使用strsplit將第三列的數(shù)據(jù)按分號分割成向量
split_values <- unlist(strsplit(GO_term_BP$GO.Process[i], ";"))
# 創(chuàng)建一個與分割后的數(shù)據(jù)長度相等的數(shù)據(jù)框
temp_df_BP <- data.frame(
Column1 = rep(GO_term_BP$GeneID[i], length(split_values)),
Column2 = rep(GO_term_BP$Symbol[i], length(split_values)),
Column3 = split_values
)
# 將temp_df添加到新的數(shù)據(jù)框中
new_GO_term_BP <- rbind(new_GO_term_BP, GO_term_BP)
}
得到如下結(jié)果image.png
但運(yùn)行時間比較長叉庐,還是后臺服務(wù)器提交方便。
image.png
split_data <- strsplit(new_GO_term_BP$Column3, "http://", fixed = TRUE)
# 創(chuàng)建一個新的數(shù)據(jù)框
new_df <- data.frame(
Column1 = new_GO_term_BP$Column1,
Column2 = new_GO_term_BP$Column2,
NewColumn1 = sapply(split_data, function(x) x[1]),
NewColumn2 = sapply(split_data, function(x) x[2])
)
此時數(shù)據(jù)就成了我們想要的image.png
以上數(shù)據(jù)再進(jìn)行一些簡單的分列即可陡叠。