6.20 分组子集:关注子集而非聚合值

 

把集合中具有相同属性的成员分配到同一个组,这就是分组运算。比如员工表根据部门分组,每组的员工都具有相同的部门;销售表可以根据销售年份分组,每组都是同一个年份的销售记录等等。

分组运算的实质是将一个集合按照某种规则拆分成若干个子集,也就是说,返回值应当是一个由集合构成的集合。对于每个成员集合,我们称为分组子集。

通常人们对分组子集的聚合值更感兴趣,因此分组运算常常伴随着对子集的进一步汇总计算。但是,我们仍然有对这些分组子集而不是聚合值更感兴趣的时候。

我们以员工表为例,部分数据如下:

ID NAME BIRTHDAY STATE DEPT SALARY
1 Rebecca 1974/11/20 California R&D 7000
2 Ashley 1980/07/19 New York Finance 11000
3 Rachel 1970/12/17 New Mexico Sales 9000
4 Emily 1985/03/07 Texas HR 7000
5 Ashley 1975/05/13 Texas R&D 16000

找出有相同出生日期的员工。
可以用函数 A.group() 来实现真正的分组,分组后的结果集是由多个分组子集组成的集合。

脚本:

A
1 =T(“Employee.csv”)
2 =A1.group(BIRTHDAY)
3 =A2.select(~.len()>1).conj()

A1:导入员工表。
A2:使用了函数 A.group() 按出生日期分组。
A3:选择成员数量大于 1 的分组,即有相同出生日期的子集。再将这些子集合并。