美文网首页
利用R进行数据处理

利用R进行数据处理

作者: 阿来呀 | 来源:发表于2023-10-12 18:51 被阅读0次

一、数据读取

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

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

二、数据处理

1、数据拆分

有时我们的数据是这样的 image.png 但我们想处理成这种的 image.png

就是将每一个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)
}
得到如下结果 image.png

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

分割后得到如下结果 image.png 可以看到我们此时再需将GO term按照//分割为两列即可。
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])
)
此时数据就成了我们想要的 image.png

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

相关文章

网友评论

      本文标题:利用R进行数据处理

      本文链接:https://www.haomeiwen.com/subject/azdlbdtx.html