2016-04-13 19 views
0

Hallo zusammen Ich habe eine TabelleR mehr Zeilen in Spalten

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 

Umwandlung und möchte diesen

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

Den einzigen Weg, um verwandeln Ich weiß, wie dies zu tun ist, um Brute-Schleife durch alle 3, weil es 3 Replikate gibt, die an mehrere Vektoren angehängt werden und am Ende zu einem Datenrahmen rekombinieren, also frage ich mich, ob es einen eleganteren/einfacheren Weg gibt, dies zu tun? Vielen Dank!

+1

Ihre Daten sind in "lange" Form - Sie können es in "breit" Form möchten. Suchen Sie das R-Tag nach "long to wide" und Sie werden viele Beispiele finden, insbesondere mit 'reshape2 :: dcast' oder' tidyr :: spread'. – Gregor

+1

'reshape2 :: dcast (df, ID ~ repliziert, value.var = 'roh')' – alistaire

+0

@alistaire danke! genau was ich brauche. Entschuldigung für die Redundanz. – Ahdee

Antwort

1

Try this ...

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