См. Править ниже Используя R, я хотел бы отфильтровать матрицу (данных генной экспрессии) и сохранить только строки (гены/зонды), которые имеют значения с высоким дисперсия. Например, я хотел бы сохранить только строки, которые имеют значения в нижнем и верхнем процентилях (например, ниже 20% и выше 80%). Я хочу ограничить свое исследование только генами с высокой дисперсией для анализа в нисходящем направлении. Существуют ли общие способы фильтрации генов в R?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
Я оценил бы любые предложения или функции, которые Я должен заглянуть. Спасибо!
EDIT
К сожалению, я не очень ясно, в ОП. (1) Я хотел бы знать значения отсечки 20% и 80% для всей матрицы (не только для каждой отдельной выборки). (2) Затем, если какая-либо строка содержит значение в верхнем или нижнем процентилях, R будет хранить эти строки. Если строка содержит значения (для всех выборок), которые приближаются к среднему значению, эти строки выбрасываются.
Спасибо за разъяснение. Я также обновил свой ответ, чтобы отразить то, что вы надеялись достичь. Быстрый вопрос - есть ли у вас матрица или кадр данных (т. Е. Является ли столбец идентификатора именем вашей матрицы или первым столбцом вашего фрейма данных?). Быстрый способ проверить будет «class (m)». –
Это должна быть матрица (только данные выражения), а столбец ID - это имена для моей матрицы (я должен был оставить имя «ID» из моего примера). – Todd
Отлично! Вот что я подумал с моим примером. –