期望结果:
按照成绩划分区间段来分组时,定义好值的划分区间后,只需用 pseg 函数便可以将分数分好段,然后统计出各段人次即可。
SPL 代码如下:
A | B | |
1 | =clipboard().import@t() | /从剪贴板导入分数表 |
2 | =[0,60,90] | /定义分数分段区间 |
3 | =["C","B","A"] | /定义对应区间名称 |
4 | =A1.align@a(A2.len(),A2.pseg(Score)) | /算出成绩所在段,按照段分组 |
5 | =A4.new(A3(#):Level,~.count():Count) | /统计各段人次,产生新序表 |
6 | =clipboard(A5.export@t()) | /将导出结果放置到剪贴板 |
五、可重叠分组
如下为 2019 年部分国家的 GDP 产值。现在想按发达国家,发展中国家以及金砖五国分类,计算一下各类的平均 GDP。
2019 年部分国家 GDP 数据 (单位:亿美元):
期望结果:
可以看到,其中的发展中国家跟金砖五国,是有重复数据的。像这种重复划分的需求,可以使用 enum 枚举函数,通过对数值的枚举,可以很*地定义分组条件。
SPL 代码:
A | B | |
1 | =clipboard().import@t() | /从剪贴板导入国家 GDP 产值表 |
2 | ["America","Japan","Germany","Britain","France","Italy","Canada","Korea","Australia"].pos(?)>0 | /枚举出发达国家 |
3 | ["China","India","Mexico","SouthAfrica"].pos(?)>0 | /枚举发展中国家 |
4 | ["Brazil","Russia","India","China","South Africa"].pos(?)>0 | /枚举金砖五国 |
5 | =[A2:A4] | /构造枚举条件序列 |
6 | =["Developed","Developing","BRICS"] | /枚举条件的对应名称 |
7 | =A1.enum@r(A5,Country) | /使用枚举函数对国家分组,注意如果允许重复数值的分组,要带上选项 r |
8 | =A7.new(A6(#):Countries,~.avg(GDP):Average) | /对分组后的数值计算平均 GDP,并产生新序表 |
9 | =clipboard(A8.export@t()) | /将结果导出并放置到剪贴板 |
《SPL Cookbook》中还有更多敏捷计算示例。