我有一个需要堆叠的GO术语的data.frame。 df看起来像:
> head(GO_info)
V2
Gene1 GO:0003674,GO:0005215,GO:0005216,GO:0005575
Gene2 GO:0000462,GO:0002181,GO:0003674,GO:0003735
但是我希望此数据帧堆叠在一起,包括标题“ ind”和“ values”,例如:
ind values
Gene1 GO:0003674
Gene1 GO:0005215
etc
我尝试使用:
GO_info2 <- stack(GO_info)
但是这不起作用,R帮助功能对我没有太大帮助。有人可以帮我吗?
答案 0 :(得分:0)
library(tidyr)
df %>% separate(V2,into = c('ind','values'),sep = '\\s') %>% #separate V2 to inds and values at space \\s
separate_rows(values,sep = ',') #separate values to multiple rows at ','
ind values
1 Gene1 GO:0003674
2 Gene1 GO:0005215
3 Gene1 GO:0005216
4 Gene1 GO:0005575
5 Gene2 GO:0000462
6 Gene2 GO:0002181
7 Gene2 GO:0003674
8 Gene2 GO:0003735
df<-read.table(text="
V2
'Gene1 GO:0003674,GO:0005215,GO:0005216,GO:0005575'
'Gene2 GO:0000462,GO:0002181,GO:0003674,GO:0003735'
",header=TRUE)