2016-09-26 92 views
-1

大家好我是新来的生物信息学和R.我有三列,看起来像这样的数据帧:劈裂数据框中列

      name X Y 
1       4052 153 302 
2       7057 80 279 
3       8454 466 266 
4       9978 466 249 
5   3397 3398 3399 3400 769 142 
6     1874 1875 723 325 

现在在名称列这些基因ID和第五排有4个基因ID一起。我想它们分开,它们具有相同的X添加到数据帧作为一个单独的行和Y.同样是6行的情况下所以我想输出是这样

     name X Y 
1       4052 153 302 
2       7057 80 279 
3       8454 466 266 
4       9978 466 249 
5       3400 769 142 
6       1875 723 325 
7       3399 769 142 
8       3398 769 142 
9       3397 769 142 
10      1874 723 325 

任何人可以帮助我有了这个 ?

+0

@Sotos这就是我想要的正好相反! – Saad

+0

大声笑...对不起.. @ProcrastinatusMaximus得到它 – Sotos

+0

@Sotos非常感谢你:)它的工作 – Saad

回答

0

使用包tidyrseparate_rows你有一个非常简单的解决方案:

复制数据:

data <- data.frame(name = c("4052", "7057","8454","9978","3397 3398 3399 3400","1874 1875"), 
        X = c(153,80,466,466,768,723), 
        Y = c(302,279,266,249,142,325), stringsAsFactors = FALSE) 

结果:

    name X Y 
1    4052 153 302 
2    7057 80 279 
3    8454 466 266 
4    9978 466 249 
5 3397 3398 3399 3400 768 142 
6   1874 1875 723 325 

现在魔术:):

library(tidyr) 

    separate_rows(data, name, convert = TRUE) 

结果:

 X Y name 
1 153 302 4052 
2 80 279 7057 
3 466 266 8454 
4 466 249 9978 
5 768 142 3397 
6 768 142 3398 
7 768 142 3399 
8 768 142 3400 
9 723 325 1874 
10 723 325 1875