R, filter-matrix basierend auf einer Varianz-cut-offs

Siehe edit unten
Mit R, ich möchte filter eine matrix (der gen-expression-Daten) und behalten nur die Zeilen (Gene/Sonden), die haben Werte mit einer hohen Varianz. Zum Beispiel würde ich gerne nur die Zeilen, deren Werte in der unteren und oberen Perzentile (z.B. unter 20% und über 80%). Ich möchte die Grenze meiner Studie nur Gene, die unter hoher Varianz für downstream-Analysen. Gibt es gemeinsame Möglichkeiten für die gen-Filterung in R?

Meine matrix hat 18 Proben (Spalten) und 47000 Sonden (Zeilen) mit den Werten, sind log2 transformiert und normalisiert. Ich weiß, die quantile() Funktion identifizieren können, die 20% und 80% Abkürzungen innerhalb der einzelnen sample-Spalte. Ich kann nicht herausfinden, wie zu finden, diese Werte für die gesamte matrix, und dann Teilmenge der ursprünglichen matrix zu entfernen Sie alle "non-varying" Zeilen.

Beispiel matrix mit einem Mittelwert von 5.97, damit die letzten drei Zeilen sollten entfernt werden, denn Sie enthalten Werte zwischen 20% und 80% Abkürzungen:

> m

                sample1 sample2 sample3 sample4 sample5 sample6
ILMN_1762337    7.86    5.05    4.89    5.74    6.78    6.41
ILMN_2055271    5.72    4.29    4.64    5.00    6.30    8.02
ILMN_1736007    3.82    6.48    6.06    7.13    8.20    4.06
ILMN_2383229    6.34    4.34    6.12    6.83    4.82    5.57
ILMN_1806310    6.15    6.37    5.54    5.22    4.59    6.28
ILMN_1653355    7.01    4.73    6.62    6.27    4.77    6.12
ILMN_1705025    6.09    6.68    6.80    6.85    8.35    4.15
ILMN_1814316    5.77    5.17    5.94    6.51    7.12    7.20
ILMN_1814317    5.97    5.97    5.97    5.97    5.97    5.97
ILMN_1814318    5.97    5.97    5.97    5.97    5.97    5.97
ILMN_1814319    5.97    5.97    5.97    5.97    5.97    5.97

Ich würde schätzen, Anregungen oder Funktionen, die ich in Aussehen sollte.
Danke!

BEARBEITEN

Sorry, ich war nicht sehr klar in den OP. (1) ich würde gerne wissen, die 20% - und 80% - cutoff-Werte für die gesamte matrix (nicht nur für jede einzelne Probe). (2) Dann, wenn jede Zeile enthält einen Wert, der in den oberen oder unteren Perzentile, R halten diese Zeilen. Wenn eine Zeile enthält Werte (für alle Proben), die fallen in der Nähe der meine, diese Zeilen werden weggeworfen.

  • Vielen Dank für die Klarstellung. Ich habe auch aktualisiert, meine Antwort zu reflektieren, was Sie hofften, zu erreichen. Kurze Frage - haben Sie eine matrix oder ein dataframe (also ist die ID-Spalte der rownames deiner matrix oder die erste Spalte der dataframe?). Ein schneller Weg, um zu überprüfen, wäre class(m).
  • Es sollte eine matrix (nur Ausdruck von Daten) und die Spalte ID ist der rownames für meine matrix (ich hätte das "ID" - Namen aus meinem Beispiel).
  • Ok Super!!! Das meinte ich mit meinem Beispiel.
  • Ich landete mit dem bioconductor-Paket "genefilter', die unten vorgeschlagen, mit diesem code: m.var <- varFilter(m, var.func=IQR, var.cutoff=0.6, filterByQuantile=TRUE) und verwendet nrow(m) und row(m.var) zum vergleichen der Anzahl der verbleibenden Sonden nach der Filterung.
InformationsquelleAutor Todd | 2013-06-08
Schreibe einen Kommentar