перенумерация значений для последовательного - PullRequest
1 голос
/ 16 января 2020

Я работаю с данными биоинформатики. У меня есть последовательность повторяющихся чисел, которые не являются последовательными по своей природе. Я пытаюсь найти простой способ перенумерации их, чтобы они были последовательными.

Пример:

старый: 1 1 1 2 2 3 3 5 5 7 7 7 9 9

Изменение желаний

новый: 1 1 1 2 2 3 3 4 4 5 5 5 6 6

Я использую R.

1 Ответ

1 голос
/ 16 января 2020

Один из способов решить эту проблему - использовать для l oop и отслеживать текущее число, которое вы вводите, и значение, которое вы заменяете.

vec <- c(1, 1, 1, 2, 2, 3, 3, 5, 5, 7, 7, 7, 9, 9)
curr <- vec[1]
rep <- vec[1]

for(i in 1:length(vec)) {
  if(vec[i] > rep) {
    rep <- vec[i]
    curr <- curr + 1
  }

  if(vec[i] > curr) {
    vec[i] <- curr
  }
}

# Print the results
for(val in vec) {
  print(val)
}

Это решение предполагает, что числа уже отсортированы. Если нет, вы можете использовать метод sort .

...