每组标题的最大差异

Maximum difference in headings per group

我有一个 data.table,其中包含有关每组(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

在 grp 1 中,标题之间的距离是 20、20 和 320,在 grp 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:

组 2:

您可以在排序后计算差异,为交叉 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