Я работаю над проектом транскриптомики, и у меня есть фрейм данных со столбцами для "SampleIDs", "hugo_name" и "Expression".DF имеет тысячи строк из-за множества имен генов для каждого образца.Я пытаюсь сделать шаг контроля качества, используя набор из 10 генов домашнего хозяйства, в котором я исключаю все «идентификаторы образца», для которых менее 9/10 генов домашнего хозяйства выражены выше предельного значения.По сути, я хочу взять все гены в DF $ hugo_name, которые соответствуют списку из 10 генов, и для каждого имени гена проверьте значение его выражения, чтобы убедиться, что оно находится выше моего списка предельных значений.
Мой фрейм данных с10 служебных генов и более низкие значения экспрессии отсечения:
EHK_list <- c("C1orf43", "CHMP2A", "GPI", "PSMB2", "PSMB4", "RAB7A", "REEP5", "SNRPD3", "VCP", "VPS29")
EHK_minimum <- data_frame("hugo_name" = EHK_list, "expression" = c(2.3697, 3.4964, 2.0620, 2.1240, 4.3081, 8.3988, 1.4969, -0.0066, 2.5436, 5.2886))
show(EHK_minimum)
<chr> <dbl>
1 C1orf43 2.37
2 CHMP2A 3.50
3 GPI 2.06
4 PSMB2 2.12
5 PSMB4 4.31
6 RAB7A 8.40
7 REEP5 1.50
8 SNRPD3 -0.0066
9 VCP 2.54
10 VPS29 5.29
Большой DF со всеми моими данными принимает форму:
Sample_ID hugo_name Expression
Sample_1 SNRPD3 6669.0
Sample_1 ABCDEF 400.2
..
..
Sample_2 RAB7A 1.75
Sample_2 ZYXVU 9.4
Я могу подналожить свой DF только на гены в EHK_list:
QC_geneSubset <- DF[DF$hugo_name %in% EHK_list,]
sample_ID hugo_name expression
1: Sample1 RAB7A 1382.78
2: Sample1 C1orf43 11.78
3: Sample1 CHMP2A 75.5
.
.
11: Sample2 RAB7A 33.3
12: Sample2 C1orf43 12.1
13: Sample2 CHMP2A 1500
.
.
21: Sample3 RAB7A 66
22: Sample3 C1orf43 1
23: Sample3 CHMP2A 19
.
.
, но я не могу понять, как сохранить только строки из DF, где DF "hugo_name" (то есть имя гена) совпадает с тем, что в EHK_list И значение выражения DF>> = отсечказначение из фрейма данных EHK_minimum.То есть я хочу сопоставить кортеж (hugo_name, expression) и убедиться в том, что в образце значение выражения превышает указанные в моем списке срезы для> = 9/10 генов в списке.Есть идеи?