每组标题的最大差异
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
我有一个 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