2015-10-03 2 views
2

Я хотел бы получить, чтобы разделить каждую строку данных на две. That's мой вход:Разделить одну строку на две

input <- 'name sample1 sample2 sample3 
       pr_001 533 411 633 
       pr_002 478 447 427' 
input <- read.table(text=input, header=T) 

Для того, чтобы получить этот результат:

output <- 'name sample1 sample2 sample3 
       pr_001-A 533 411 633 
       pr_001-B 533 411 633 
       pr_002-A 478 447 427 
       pr_002-B 478 447 427' 
output <- read.table(text=output, header=T) 

Таким образом, для pr_001 в sample1 результатом является два ряда с одинаковым значением pr_001-A и pr_001-A и той же логика должна следовать за всеми образцами и именами. Некоторая идея справиться с этим? Спасибо!

ответ

1

Первый дублировать строки с (на основе akrun's suggestion):

output <- input[rep(1:nrow(input), each = 2),] 

Затем добавьте -A и -B к каждому name с:

output$name <- paste(output$name, c("A", "B"), sep = "-") 
0
library(dplyr) 

bind_rows(input %>% 
      mutate(sample1 = paste(sample1, "A", sep = "-"), 
      input %>% 
      mutate(sample1 = paste(sample1, "B", sep = "-")) %>% 
    arrange(sample1) 
+1

подсказку. Поскольку вы не добавляете пояснительный текст или не показываете, что они на самом деле работают, все они помечены как низкое качество, и мы должны их просмотреть и решить, удалять ли их в очереди просмотра. Это очень утомительно, и я видел 4 ваших сообщения за последние 10 минут. Пожалуйста, постарайтесь сделать отчетливо высокого качества. –

Смежные вопросы