以下の編集を参照してください 。R を使用して、(遺伝子発現データの) マトリックスをフィルター処理し、分散の高い値を持つ行 (遺伝子/プローブ) のみを保持したいと思います。たとえば、下位パーセンタイルと上位パーセンタイル (たとえば、20% 未満で 80% を超える) の値を持つ行のみを保持したいと思います。ダウンストリーム分析のために、分散の大きい遺伝子のみに研究を限定したいと考えています。Rでの遺伝子フィルタリングの一般的な方法はありますか?
私のマトリックスには、18 個のサンプル (列) と 47000 個のプローブ (行) があり、値は log2 変換され、正規化されています。quantile()
関数が各サンプル列内の 20% と 80% のカットオフを識別できることはわかっています。マトリックス全体でこれらの値を見つけてから、元のマトリックスをサブセット化してすべての「変化しない」行を削除する方法がわかりません。
平均が 5.97 の行列の例。最後の 3 行は、カットオフ 20% から 80% の間の値が含まれているため、削除する必要があります。
> 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
検討すべき提案や機能をいただければ幸いです。ありがとう!
編集
申し訳ありませんが、OPではあまり明確ではありませんでした。(1) (個々のサンプルだけでなく) マトリックス全体の 20% と 80% のカットオフ値を知りたいです。(2) 次に、いずれかの行に上位または下位のパーセンタイルの値が含まれている場合、R はこれらの行を保持します。行に (すべてのサンプルの) 平均値に近い値が含まれている場合、これらの行は除外されます。