6.22 分组子集:对子集过滤,再对选出子集进一步分组
选出员工人数超过 50 人的州,查询这些州各部门的平均工资。
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(STATE).select(~.len()>50) |
3 | =A2.conj(~.groups(DEPT; avg(SALARY):AVG_SALARY).derive(A2.~.STATE:STATE)) |
A1 导入员工表。
A2 按州进行分组,并选出员工数大于 50 人的分组子集。
A3 对每个州的分组子集再按部门分组汇总平均工资,再把这些结果集合并。