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。
