一、数据读取
在利用R处理数据时,发现数据会有一些缺失,这时R就会报错

skip=1
这个函数跳过第一行,但大多数据并不是仅仅只有第一行缺数据,这时我们可以利用fill=T
来填补空余的数据。Go <- read.table("~/bulk_RNA/merge_bulk_RNA/GO/new.Annot.txt",head=T,sep="\t",fill = T)
这个时候就可以正常读入了,一些无数据的空就以空格填补了。
二、数据处理
1、数据拆分


就是将每一个symbol号与一个GO_ID号相对应,这样方便后期做富集分析,我们对数据做以下处理:
a.将GO.Compoment按照;分割
# 初始化一个新的数据框
new_GO_term_BP <- data.frame(
Column1 = character(0),
Column2 = character(0),
Column3 = character(0)
)
# 遍历原始数据框的每一行
for (i in 1:nrow(GO_term_BP)) {
# 使用strsplit将第三列的数据按分号分割成向量
split_values <- unlist(strsplit(GO_term_BP$GO.Process[i], ";"))
# 创建一个与分割后的数据长度相等的数据框
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添加到新的数据框中
new_GO_term_BP <- rbind(new_GO_term_BP, GO_term_BP)
}
得到如下结果

但运行时间比较长,还是后台服务器提交方便。

split_data <- strsplit(new_GO_term_BP$Column3, "//", fixed = TRUE)
# 创建一个新的数据框
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])
)
此时数据就成了我们想要的

以上数据再进行一些简单的分列即可。
网友评论