2016-07-27 19 views
0

Ich bin stecken, wie man ein Problem löst. Ich habe eine Matrix mit folgendem Format:schreibe Werte für ähnliche Zeilen

Sequence  Position Raw Binding (log ratio) 
UC001AOZ.3  146  -0.746 
UC001AOZ.3  147  -1.27 
UC001AOZ.3  148  -1.66 
UC001AOZ.3  149  -2.16 
UC001AOZ.3  150  -2.08 
...    ...  ... 
UC222AOF.2  5000  1.22 
UC222AOF.2  146  -1.12 
UC222AOF.2  147  -1.41 
...    ...  ... 
UC222AOF.2  5000  5.13 
...    ...  ... 

Die erste Spalte (Sequence) beschreibt Gene nach diesen kryptischen Namen. Die zweite Spalte ist eine Position innerhalb des menschlichen Genoms und die dritte Spalte bezieht sich auf einen Wert für ein Ereignis.

Die Position geht bis 5000 und beginnt dann bei 146 erneut für das nächste Gen (siehe Format, zweiter Genname "UC222AOF.2"). Insgesamt gibt es 250 Gene mit 4854 Positionen und entsprechenden Raw Biding-Werten.

Ich möchte Mittelwerte aller Raw Bindung (log-Verhältnis) Werte an den Positionen zwischen 146 und 5000.

Eine Möglichkeit könnte wie folgt aussehen erhalten (Werte können als oben abweichen):

  146  147  148  149  ... 5000 
UC001AOZ.3 -0.746 -1.27 -1.66 -2.16 ...  1.22 
UC222AOF.2 -1.12 -1.41 -1.31 -1.81 ...  5.13 
UC002BW1.1 -0.112 -0.31 -0.51 -1.01 ...  1.01 

Ich bin kein R regelmäßig aber einige Grundlagen kennen. Vielen Dank im Voraus!

+0

Guter Start für solide Antworten zu erhalten: http://StackOverflow.com/Questions/5963269/How-to-Make-Agreat-R-reproducible-Beispiel – snoram

+0

Es scheint, Sie können dooda.Table' und tun 'DT [Position> = 146, Mittelwert (Rohbindung (log ratio))] ' – snoram

+0

Vielen Dank für diesen hilfreichen Link! Ich habe hier ein Beispiel hochgeladen http://www.filehosting.org/file/details/589167/sample.tab –

Antwort

1

Die Funktion dcast() des reshape2-Pakets könnte nützlich sein.

library(reshape2) 
df 
#  Sequence Position Binding 
# 1 UC001AOZ.3  146 -0.746 
# 2 UC001AOZ.3  147 -1.270 
# 3 UC001AOZ.3  148 -1.660 
# 4 UC001AOZ.3  149 -2.160 
# 5 UC001AOZ.3  150 -2.080 
# 6 UC222AOF.2  5000 1.220 
# 7 UC222AOF.2  146 -1.120 
# 8 UC222AOF.2  147 -1.410 

dcast(df, Sequence ~ Position, value.var = "Binding") 
#  Sequence 146 147 148 149 150 5000 
# 1 UC001AOZ.3 -0.746 -1.27 -1.66 -2.16 -2.08 NA 
# 2 UC222AOF.2 -1.120 -1.41 NA NA NA 1.22 

Im Wesentlichen Sie „schwingen“ die Position Spalte nun eine Reihe von Zeilen sein, und sagen R die Werte in der Binding-Spalte verwenden in Ihren frisch gebackenen Reihen zu füllen.

http://seananderson.ca/images/dcast-illustration.png von http://seananderson.ca/2013/10/19/reshape.html ist eine großartige visuelle Darstellung der dcast() - Funktion.