GO注释文件中多行变两列和两列变多行

test_Gene2GO.txt

ChrSy.fgenesh.gene.10   GO:0003676
ChrSy.fgenesh.gene.12   GO:0003676, GO:0004523, GO:0015074
ChrSy.fgenesh.gene.14   GO:0004674, GO:0005509, GO:0005515, GO:0005524, GO:0006468, GO:0016021, GO:0030247
ChrSy.fgenesh.gene.17   GO:0003676, GO:0004190, GO:0006508, GO:0008270, GO:0015074
ChrSy.fgenesh.gene.21   GO:0004672, GO:0006468
ChrSy.fgenesh.gene.22   GO:0003676, GO:0004523, GO:0015074
ChrSy.fgenesh.gene.26   GO:0006508, GO:0008234
ChrSy.fgenesh.gene.27   GO:001602

转换一列变多行

  • 方法①
test <- read.table("test_Gene2GO.txt", sep = "\t", header = F)
library(tidyverse)
test %>% separate_rows(V2, sep = ",")
## install.packages("splitstackshape")
## install_github("mrdwab/splitstackshape", ref = "devel")
## 不知道为什么我都不能安装好, 最后下载到本地安装好的
library(splitstackshape)
test %>% cSplit(., "V2", ",", 'long')

多行变两列

  • 方法①
 aggregate(test1, by = list(test1$V1), c) %>% transmute(Gene = .$Group.1, GOid = .$V2)
  • 方法②


  • 方法③

test1 %>%
  group_by(V1) %>%
  summarise(GO_ID = paste(V2, collapse = ","))

还有许多简单的命令。。。只是能解决就好了。

附带小惊喜

至于怎么下载, 大家心里都有万能的下载渠道。。

一列变多行:

  • 巧用 stringr::str_split()unnest() 函数将 GO 背景文件,将一列拆分成多行
  • 巧用 tidyr::separate_rows() 函数将一列拆分成多行
test <- tribble(
  ~gene, ~GO_ID,
  "gene1", paste0("GO:1", ";", "GO:2", ";","GO:3")
)

test %>% 
  mutate(Go_id = stringr::str_split(GO_ID, ";")) %>%
  unnest() %>%
  select(gene, Go_id)


test %>%
  tidyr::separate_rows(GO_ID, sep = ";")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 6,273评论 0 10
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 8,037评论 5 115
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,240评论 2 89
  • 草醒花开造化神, 东来紫气报佳音。 凤孙折挂堪欣慰, 银杏坡前尽望春。 2019.1.4 注:银杏坡陕师...
    孔中窥天阅读 229评论 0 1
  • hh今天和终愈去看大鱼海棠,觉得好棒啊!虽然我也不是很专业很会分析电影,但大海的场景真是超美尤其bgm真的是……真...
    爽朗的栗子阅读 458评论 0 0

友情链接更多精彩内容