2016-09-26 2 views
-1

Привет Всем Я новичок в биоинформатику и R. У меня есть кадр данных, который имеет три столбца и выглядит следующим образом:Spliting колонок dataframe

идентификаторов
      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 

Теперь в колонке имени они являются генными и пятым В ряду есть 4 идентификатора генов вместе. Я хочу, чтобы разделить их, добавьте их в dataframe в качестве отдельной строки с тем же 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

lol ... извините .. @ProcrastinatusMaximus получил это – Sotos

+0

@ Сотос спасибо вам большое :) это сработало – 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 
Смежные вопросы