6.15 次序相关的分组:连续相同值分组
有些时候,数据的次序在分组时是有意义的。我们有时会把具有相同字段值或者同时满足某些条件的相邻记录分到同一组。比如蝉联奥运会金牌榜第一名届数最长的国家是哪个,某支股票的收盘价最多连续上涨了几天等等。这就需要用到次序相关的分组了。
对有序集合进行分组时,当分组字段的值发生变化时重新分组。
根据奥运会奖牌榜统计表,求总成绩蝉联第一名届数最长的国家及其奖牌信息。部分数据如下:
Game | Nation | Gold | Silver | Copper |
---|---|---|---|---|
30 | USA | 46 | 29 | 29 |
30 | China | 38 | 27 | 23 |
30 | UK | 29 | 17 | 19 |
30 | Russia | 24 | 26 | 32 |
30 | Korea | 13 | 8 | 7 |
… | … | … | … | … |
函数 A.group() 的选项 @o: 当字段值发生变化时重新分组。
@1:每组取第一条记录组成新的序表
脚本:
A | |
---|---|
1 | =T(“Olympic.txt”) |
2 | =A1.sort@z(GAME,GOLD,SILVER,COPPER) |
3 | =A2.group@o1(GAME) |
4 | =A3.group@o(NATION) |
5 | =A4.maxp(~.len()) |
A1:导入奥运会奖牌榜。
A2:按第几届和奖牌数(金、银、铜)降序排列。
A3:每届取一名,因为有序也就是每届的第一名。
A4:当国家改变时重新分组。
A5:选出成员数量最多的一组,也就是蝉联次数最多的。