Присвойте новое значение после условного цикла, сравнивая значения в другом столбце - PullRequest
0 голосов
/ 17 октября 2019

R начинающий, имеющий дело с очень сложной базой данных. И мой первый пост здесь.

Я хочу назначить 2 новых столбца "new_start" и "new_end", которые следуют следующим правилам:

  1. , если x уникален, new_start =start, new_end = end
  2. для повторяющихся значений 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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...