每组标题的最大差异

时间:2018-11-05 09:13:16

标签: r data.table 360-degrees

我有一个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中添加了一个数据点。这也是两个可视化的饼图。

对于grp 1:enter image description here

对于grp 2:enter image description here

1 个答案:

答案 0 :(得分:4)

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