2016-09-26 3 views
-1

Hallo, ich bin neu in der Bioinformatik und R. Ich habe einen Datenrahmen, die drei Spalten und sieht wie folgt aus:Spliting Datenrahmen Spalte

      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 

nun in der Spalte Name sind diese Gen-IDs und zum fünften Zeile gibt es 4 Gen-IDs zusammen. Ich möchte, dass sie trennen, fügen sie dem Datenrahmen als eine separate Zeile mit der gleichen X und Y gleiche ist der Fall mit der Zeile 6. Deshalb möchte ich die Ausgabe so sein, diese

     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 

Kann mir jemand helfen mit diesem ?

+0

@Sotos Das ist das Gegenteil von dem, was ich will! – Saad

+0

lol ... sorry .. @ProcrastinatusMaximus bekam es – Sotos

+0

@Sotos vielen Dank :) es hat funktioniert – Saad

Antwort

0

Paket mit tidyrseparate_rows Sie eine wirklich einfache Lösung haben:

replizieren Daten:

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) 

Ergebnis:

    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 

jetzt die Magie :):

library(tidyr) 

    separate_rows(data, name, convert = TRUE) 

Ergebnis:

 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 
Verwandte Themen