请参阅下面的编辑 使用 R,我想过滤(基因表达数据的)矩阵并仅保留具有高方差值的行(基因/探针)。例如,我只想保留在底部和顶部百分位数中具有值的行(例如,低于 20% 和高于 80%)。我想将我的研究限制在仅用于下游分析的高方差基因。R中是否有通用的基因过滤方法?
我的矩阵有 18 个样本(列)和 47000 个探针(行),其值经过 log2 转换和归一化。我知道该quantile()
函数可以识别每个样本列中的 20% 和 80% 截止值。我不知道如何为整个矩阵找到这些值,然后对原始矩阵进行子集化以删除所有“不变”行。
平均值为 5.97 的示例矩阵,因此应删除最后三行,因为它们包含 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 将保留这些行。如果一行包含接近平均值的值(对于所有样本),则这些行将被丢弃。