2016-04-13 5 views
0

Привет всем У меня есть таблицаR преобразование нескольких строк в столбцы

id sample_name replicates raw 
a control  c1   1 
a control  c2   2 
a control  c3   3 
b control  c1   10  
b control  c2   20 
b control  c3   20 

и хотел бы превратить это

id c1 c2 c3 
a 1 2 3  
b 10 20 20 

Единственный способ я знаю, как сделать это в грубой проходным каждые 3, потому что есть 3 репликации и добавьте это к нескольким векторам и рекомбинируйте их в конце в dataframe, таким образом, мне интересно, есть ли более элегантный/простой способ сделать это? благодаря!

+1

Ваши данные в «длинной» форме - вы хотите его в «широком» форме. Найдите тег R для «long to wide», и вы найдете много примеров, особенно используя 'reshape2 :: dcast' или' tidyr :: spread'. – Gregor

+1

'reshape2 :: dcast (df, id ~ replicates, value.var = 'raw')' – alistaire

+0

@alistaire спасибо! именно то, что мне нужно. Извините за избыточность. – Ahdee

ответ

1

Попробуйте это ...

> library(reshape2) 
> dcast(melt(df[, -2]), ...~replicates)[, -2] 
Using id, replicates as id variables 
    id c1 c2 c3 
1 a 1 2 3 
2 b 10 20 20 
Смежные вопросы