A.group(x i ,…)

阅读(530) 标签: 等值分组, 序列,

描述:

xi,…做等值分组

语法:

A.group(xi,…) 

备注:

将序列/排列按照一个或多个字段/表达式进行等值分组,结果为组集构成的序列

选项:

@o

只和相邻的对比,相当于归并,结果集不再排序

@1

取每一个分组的第一条记录组成排列后返回(注意是数字1,不是字母l

@n

x取值为分组序号,可直接定位,与@o互斥

@u

结果集不再按x排序;与@o/@n互斥

@i

xbool表达式,如果x的结果为true则开始新的一组。相当于A.group@o(a+=if(x,1,0)) a=0且只有一个x

@0

使x的计算结果为空的组丢弃,当只有一个x时可以用该选项

@s

分组后序列/排列进行和列,相当于A.group(xi,…).conj()

@p

返回组成员在A中位置构成的数列的序列

@h

用于分段有序的数据,可提高分组效率

参数:

A

序列

xi

分组表达式,多个字段/表达式组合分组时,每个分组表达式用逗号隔开

返回值:

序列/排列

示例:

Ø  对数列分组

 

A

 

1

[6,9,12,15,16,5,1,7,8]

 

[[6,12,16,8],[ 9,15,5,1,7]]数列被分为2组,一组成员除以2余数为0,另一组成员除以2余数为1

2

=A1.group(~%2)

3

=A1.group(~%2,~%3)

[[6,12],[16],[8],[9,15],[1,7],[5]]

按照多个表达式分组。

4

=[6,9,16,5,1,7,8].group@s(~%2)

按照奇偶数分组后和列

 

Ø  对分组结果重复利用

 

A

 

1

=demo.query("select NAME,BIRTHDAY,GENDER from EMPLOYEE")

 

2

=A1.group(GENDER)

[[Rebecca,Ashley,Rachel,…],[Matthew,Ryan,Jacob,…]],点开分组后每个成员就是一个序列

3

=A2.new(GENDER:Gender,~.count():Number)

对分组后的成员进行统计

4

=A2.new(GENDER:Gender,~.avg(age(BIRTHDAY)):Average)

对分组结果重复利用,再次进行不同的统计

 

Ø  多种分组方式

 

A

 

1

=demo.query("select NAME,GENDER,DEPT,BIRTHDAY from EMPLOYEE")

 

2

=A1.group(GENDER,DEPT)

多字段分组

3

=A1.group@o(GENDER)

不排序,相邻的记录进行比较,相同的归为一组。不相邻但相同的记录可能变成两组,因此会出现重复的组,返回序列集,

4

=A1.group@1(GENDER)

返回每组第一条记录

 

5

=A1.group@n(if(GENDER=="F",1,2))

x取值为分组序号,可直接定位

[[Rebecca,Ashley,Rachel,…],[Matthew,Ryan,Jacob,…]]

6

=A1.group@u(GENDER,DEPT)

结果集不按分组字段排序

7

=A1.group@i(GENDER=="F")

遇到GENDER=="F"则开始新的分组

8

=A1.group@p(GENDER,DEPT)

返回按照字段GENDER,DEPT分组后,记录在原序表中的位置构成的序列

9

=file("D:\\Salesman.txt").import@t()

10

=A9.group@0(Gender)

按照字段Gender分组,为空的组丢弃不显示

11

=file("D:/emp10.txt").import@t()

数据文件emp10.txt中,每10条数据根据DEPT进行了一次排序

12

=A11.group@h(DEPT)

A11是以DEPT分段有序的数据,使用@h选项提高分组效率

相关概念:

A.id()

A.group(x:F,…;y:G,…)