У меня есть фрейм данных, в котором есть столбец для хромосомы, еще один - с физическим положением, а последний - это условие со значениями TRUE или FALSE. Это условие является ИСТИННЫМ, когда разница между значением i + 1 для Позиции и значением i для Позиции не больше определенного значения (в примере - 1000).
Я хочу подсчитать, сколько ИСТИННЫХ значений для этой позиции есть определенный диапазон, пока не будет найдено ЛОЖЬ.
Поскольку мой исходный фрейм данных слишком длинный, я оставлю пример.
CHR <- c(1,1,1,1,2,2,2,3,3,3,3)
POS <- c(10,10000,12000,15000,25,75,50000,50,100,40000,45000)
CONDITION <- c(F,T,T,F,T,F,F,T,F,T,F)
df <- data.frame(CHR,POS,CONDITION)
Я хочу что-то получить вот так:
CHR_r <- c(1,1,2,2,3,3)
from <- c(10,10000,25,50000,50,40000)
to <- c(10,15000,75,50000,100,45000)
count <- c(1,3,2,1,2,2)
result <- data.frame(CHR_r,from,to,count)
Как лучше всего выполнить sh это? Я думал об использовании while l oop, но у меня была проблема, что он выходит из l oop каждый раз, когда обнаруживается FALSE. Еще я подумал об использовании sequence(rle)
, но результат оказался не таким, как я ожидал, возможно, потому, что это было более сложным, чем я хотел.