У меня есть 2 набора данных c. Я фильтрую file1 на основе столбца в file2. Однако мне также нужно учесть второй столбец в файле 2, и я не уверен, как это сделать.
Условие для извлечения строки в файле 1 состоит в том, что только строки, которые имеют положение хромосомы или больше 5000 больше или больше 5000 меньше, чем любое положение хромосомы для вариантов на той же самой хромосоме в файле 2.
Например, мои данные выглядят так:
Файл 1:
Variant Chromsome Chromosome Position
Variant1 2 14000
Variant2 1 9000
Variant3 8 37000
Variant4 1 21000
Файл 2:
Variant Chromosome Chromosome Position
Variant1 1 10000
Variant2 1 20000
Variant3 8 30000
Ожидаемый результат (вариантов с расстоянием более +/- 5000 позиций по сравнению с любой строкой файла 2 в той же хромосоме):
Variant Chromosome Position Chromosome
Variant1 14000 2
Variant3 37000 8
#Variant1 at 14000, whilst within 5000 + of Variant1 at 10000 in file2 is on a different chromosome and therefore not compared and is kept.
#Variant3 is on the same chromosome as Variant4 in file1 but larger than 5000+ distance and is kept.
Я пытался кодировать, используя unix, однако получил только фильтрацию больше +5 + для каждого варианта без учета хромосомы, и мне посоветовали попробовать кодирование на R, однако я новичок в R и Не уверен, где начать. Я предполагаю, что мне нужен оператор if для «если строка file1 имеет совпадающий номер хромосомы как file2, тогда выполнить фильтрацию больше + 5000 в пределах этого номера хромосомы» с a для l oop для перехода по каждой строке - даже Будем признательны за рекомендации о том, как это сделать.