A: как найти ближайшее значение в векторе


Вы можете использовать следующий базовый синтаксис, чтобы найти ближайшее значение между элементами двух векторов в R:

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: поиск ближайшего значения вектора в R

Предположим, у нас есть следующие два вектора в R:

 #definevectors
vector1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
vector2 <- c(3, 5, 8, 11)

Теперь предположим, что для каждого значения в первом векторе мы хотим найти ближайшее значение во втором векторе.

Для этого мы можем использовать следующий синтаксис:

 #define cut points
cuts <- c(-Inf, vector2[-1]-diff(vector2)/2, Inf)

#for each value in vector1, find closest value in vector2
cut(vector1, breaks=cuts, labels=vector2)

 [1] 3 3 3 3 5 5 8 8 8 11

Вот как интерпретировать результат:

  • Для первого значения вектора1 (1) ближайшее значение к вектору2 — 3 .
  • Для второго значения вектора1 (2) ближайшее значение к вектору2 — 3 .
  • Для третьего значения вектора1 (3) ближайшее значение к вектору2 — 3 .
  • Для четвертого значения вектора1 (4) ближайшее значение к вектору2 — 3 .
  • Для пятого значения вектора1 (5) ближайшее значение к вектору2 равно 5 .

И так далее.

Примечание . Этот метод предполагает, что значения второго вектора строго возрастают. Если вы еще этого не сделали, возможно, вам придется сначала отсортировать второй вектор.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как рассчитать среднее значение на группу в R
Как усреднить по столбцам в R
Как суммировать определенные столбцы в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *