У меня есть два фрейма данных, X
и Y
.
X <- data.frame(V1 = c("chr1", "chr1", "chr1", "chr2", "chr2", "ch2"),
Start = c(0, 540, 920, 0, 582, 715 ),
Stop = c(230, 720, 1270, 350, 635, 950))
Y <- data.frame(V1 = c("chr1", "chr1", "chr1", "chr2", "chr2", "ch2"),
Start = c(3, 16, 180,
15, 585, 800 ),
Stop = c(15, 24, 201,
102, 612, 850))
Я хочу получить data.frame Z
, который является новым data.frame с информацией X
и количество Y
между диапазоном каждой строки "X". Например, вы можете сосчитать 3 строки "Y", которые находятся между диапазонами первой строки "X" в chr1, поэтому у меня есть 3 в "Z" в этой строке.
Z <- data.frame(V1 = c("chr1", "chr1", "chr2", "chr2", "chr2", "ch2"),
Start = c(0, 540, 920, 0, 582, 715 ),
Stop = c(230, 720, 1270, 350, 635, 950),
Count = c(3, 0, 0, 1, 1, 1))
Я был бы признателен за некоторую помощь, потому что до сегодняшнего дня мне удавалось печатать только количество строк, если в наборе данных «X» есть только одна строка, но я не знаю, как достичь своей цели. Я предполагаю, что мне нужно использовать некоторые условные операторы плюс цикл for для итерации по строкам «X», но я не знаю, как это сделать.
Что я пробовал:
Попытка вычислить количество строк, соответствующих критериям только с одной строкой в "Y":
nrow(Y[Y$Start >= X$Start & Y$Stop <= X$Stop, ])
Работает, когдав «X» есть только 1 строка, но не тогда, когда я пытался реализовать ее в цикле for.