Максимальная разница в заголовках на группу - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть таблица данных с информацией о (360-градусных) заголовках на группу.

library(data.table)
dt <- data.table(headings = c(340,0,20,90,180,270,91), grp = c(1,1,1,2,2,2,2))

   headings grp
1:      340   1
2:        0   1
3:       20   1
4:       90   2
5:      180   2
6:      270   2
7:       91   2

в группе 1 расстояние между заголовками равно 20, 20 и 320, а в группе 2 - 1,89,90 и 180. Я хотел бы найти максимальное расстояние между заголовками и добавить их в каждую группу, чтобы результат выглядеть так:

   headings grp maxHeading
1:      340   1        320
2:        0   1        320
3:       20   1        320
4:       90   2        180
5:      180   2        180
6:      270   2        180
7:       91   2        180

Я не обязательно хочу решение для data.table, но было бы неплохо, если бы оно было.

РЕДАКТИРОВАТЬ: Чтобы уточнить, я изменил значения и добавил точку данных в GRP 2. Вот также два круговых диаграммы для визуализации.

Для группы 1: enter image description here

Для группы 2: enter image description here

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете рассчитать различия после сортировки, добавив еще один для пересечения пары 0/360:

dt[, v := max(
  diff(sort(headings)),
  min(headings) - max(headings) + 360
), by=grp]

   headings grp   v
1:      340   1 320
2:        0   1 320
3:       20   1 320
4:       90   2 180
5:      180   2 180
6:      270   2 180
7:       91   2 180
...