使用R堆叠非数值数据集

时间:2018-08-22 20:13:17

标签: r stack

我有一个需要堆叠的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帮助功能对我没有太大帮助。有人可以帮我吗?

1 个答案:

答案 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)