6.12 枚举分组:可重复分组
有时我们需要把满足多个分组条件的成员,重复分配到所有对应的分组中。
根据城市 GDP 表,分别统计直辖市、一线城市、二线城市的人均 GDP。需要注意的是,分组可能会有重复成员,比如北京既是一线城市,又是直辖市。部分数据如下:
ID | CITY | GDP | POPULATION |
---|---|---|---|
1 | Shanghai | 32679 | 2418 |
2 | Beijing | 30320 | 2171 |
3 | Shenzhen | 24691 | 1253 |
4 | Guangzhou | 23000 | 1450 |
5 | Chongqing | 20363 | 3372 |
… | … | … | … |
在 SPL 中函数 A.enum() 的选项 @r,用于在枚举分组时每组检查所有成员是否匹配。
脚本:
A | |
---|---|
1 | =T(“CityGDP.txt”) |
2 | [[“Beijing”,“Shanghai”,“Tianjin”,“Chongqing”],[“Beijing”,“Shanghai”,“Guangzhou”,“Shenzhen”],[“Chengdu”,“Hangzhou”,“Chongqing”,“Wuhan”,“Xian”,“Suzhou”,“Tianjin”,“Nanjing”,“Changsha”,“Zhengzhou”,“Dongguan”,“Qingdao”,“Shenyang”,“Ningbo”,“Kunming”]] |
3 | [A2(1).pos(?)>0,A2(2).pos(?)>0,A2(3).pos(?)>0] |
4 | =A1.enum@r(A3,CITY) |
5 | [直辖市, 一线城市, 二线城市] |
6 | =A4.new(A5(#):AREA,.sum(GDP)/.sum(POPULATION)*10000:CAPITA_GDP) |
A1:导入城市 GDP 表。
A2:定义直辖市、一线城市和二线城市常量。
A3:枚举直辖市、一线城市和二线城市的条件。
A4:使用函数 A.enum() 按枚举条件分组,使用选项 @r 时每组检查所有成员是否匹配。
A5:定义每组的名称。
A6:根据枚举分组结果,统计每组的人均 GDP。