R начинающий, имеющий дело с очень сложной базой данных. И мой первый пост здесь.
Я хочу назначить 2 новых столбца "new_start" и "new_end", которые следуют следующим правилам:
- , если x уникален, new_start =start, new_end = end
для повторяющихся значений x (например, b, d и e в наборе данных ниже):
2.1: если начало [i + 1]>end [i] +2, new_start [i] = start [i], new_end [i] = end [i];разорвать цикл
2.2: если начало [i + 1] <= конец [i] +2, new_end [i] = конец [i + 1], удалить строку i + 1, это продолжается до начала[i + 1]> end [i] +2 или изменения значений x
Я попытался использовать lead () и lag (), которые могут работать, только когда x повторяется только один раз.
Ниже приведен мой пример фрейма данных
dt = data.frame(
x= c("a","b","b","c","d","d","d","d","e","e","e","f"),
start= c(1,1,9,3,4,104,106,111,7,11,15,9),
end = c(101,2,11,103,104,105,110,112,9,12,19,10)
)
Для этих конкретных тестовых данных это окончательный результат, который я надеюсь получить:
x new_start new_end
a 1 101
b 1 2
b 9 11
c 3 103
d 4 112
e 7 12
e 15 19
f 9 10
Спасибо