R语言拆分数据框里的列

用emapper去做功能注释,gene id 和对应的GO格式如下
gene01 GO:001,GO002
gene02 GO:001,GO002,GO003
需要把这个格式转换成下面的格式
gene01 GO:001
gene01 GO:002
gene02 GO:001
gene02 GO:002
gene02 GO:003
一个思路是把第二列进行拆分,然后,款格式转换为长格式然后再去除缺失值就行了
拆分列的话可以用separate这个函数,但是这个函数需要指定拆分以后得列的名子,如果数据少还好说,但是数据多的话不知道会拆分出多少列
还有一种办法是借助nest()函数
示例代码如下

data.frame(gene_id=c(“gene01″,”gene02”),
go=c(“GO:001,GO:002″,”GO:001,GO:002,GO:003”)) %>%
nest(.by=”gene_id”) %>%
mutate(newcol=map(data,function(x){str_split(x,pattern=”,”,simplify = TRUE) %>% as.data.frame()})) %>%
unnest(newcol)
图片
data.frame(gene_id=c(“gene01″,”gene02”),
go=c(“GO:001,GO:002″,”GO:001,GO:002,GO:003”)) %>%
nest(.by=”gene_id”) %>%
mutate(newcol=map(data,function(x){str_split(x,pattern=”,”,simplify = TRUE) %>% as.data.frame()})) %>%
unnest(newcol) %>%
dplyr::select(-data) %>%
pivot_longer(!gene_id) %>%
na.omit() %>%
dplyr::select(-name)

欢迎大家关注我的公众号
小明的数据分析笔记本

声明:文中观点不代表本站立场。本文传送门:http://eyangzhen.com/422435.html

(0)
联系我们
联系我们
分享本页
返回顶部