集合、聚合与循环

阅读(733) 标签: 集合, 聚合, 循环,

本章主要展示关于集合、聚合与循环的代码参考,比如判断是否是数列、判断是否递增数列、判断是否成员或子集、判断两个序列的成员是否相同、对有序序列用归并法快速做并交差、计算平方和方差、计算加权平均、去掉最大值和最小值的平均、取相邻行计算比上期、取相邻集合计算移动平均、汇总循环、不同数据结构的排列作并集等。

判断是否是数列

 

A

 

1

[1,2,3,4]

 

2

=A1.pselect(~!=int(~))==null

检查是否有不是整数的成员

 

判断是否递增数列

 

A

 

1

[1,2,3,4,5]

 

2

=A1.pselect(~!=int(~) || ~<=~[-1] )==null

 

 

判断是否成员或子集

 

A

 

1

[1,2,3,4,5,6,7]

 

2

=A1.pos(2)!=null

true,成员

3

=A1.pos@c([2,3])!=null

true ,连续子集

4

=A1.pos@c([3,2])!=null

false

5

=A1.pos@c([2,5])!=null

false

6

=A1.pos@i([2,3])!=null

true,子集判断

7

=A1.pos@i([3,2])!=null

false

8

=A1.pos@i([2,5])!=null

true

 

判断两个序列的成员是否相同

 

A

 

1

[1,2,3]

 

2

[3,2,1]

 

3

=A1.eq(A2)

true

 

对有序序列用归并法快速做并、交、差

 

A

 

1

=demo.query("select CLASS,STUDENTID, SUBJECT, SCORE from SCORES where CLASS=? and SUBJECT=? and STUDENTID<?","Class one", "Math",10)

 

2

=demo.query("select CLASS,STUDENTID, SUBJECT,SCORE from SCORES where CLASS=? and SUBJECT=? and STUDENTID>?","Class two", "Math",5)

 

3

=A1.sort(STUDENTID)

 

4

=A2.sort(STUDENTID)

 

5

=[A3:A4].merge(STUDENTID)

6

=[A3:A4].merge@u(STUDENTID)

7

=[A3:A4].merge@i(STUDENTID)

8

=[A3:A4].merge@d(STUDENTID)

 

计算平方和、方差

 

A

 

1

[1,2,3,4,5,6,7,8]

 

2

=A1.sum(~*~)

平方和

3

=A1.variance()

方差

4

=demo.query("select NAME,EVENT,SCORE from GYMSCORE")

 

5

=A4.variance(SCORE)

 

 

计算加权平均

 

A

 

1

[9,9.1,8.5,9.8,9.4]

 

2

[0.9,0.8,1.0,0.95,1.0]

 

3

=(A1**A2).sum()/A2.sum()

 

 

去掉最大值和最小值的平均

 

A

 

1

[99,98,95,93,87,89,90,96,94]

 

2

=(A1.sum()-A1.max()-A1.min())/(A1.len()-2)

 

3

=(A1\A1.min()\A1.max()).avg()

 

 

取相邻行计算比上期

 

A

 

1

[1,2,3,4,5,6]

 

2

=A1.(~/~[-1]-1)

 

3

=demo.query("select DATE,sum(CLOSING) AMOUNT from STOCKRECORDS GROUP BY DATE")

 

4

=A3.derive(AMOUNT/AMOUNT[-1]-1: Period-over-period)

 

 

取相邻集合计算移动平均

 

A

 

1

[1,2,3,4,5,6]

 

2

=A1.(~[-1,1].avg())

 

3

=demo.query("select STOCKID, DATE,CLOSING from STOCKRECORDS where STOCKID=?","000062")

 

4

=A3.(CLOSING[-3,3].avg())

 

 

汇总循环

 

A

 

1

[1,2,3,4,5,6,7]

 

2

=A1.iterate(~*~~;1)

返回连乘最终结果

 

不同数据结构的排列作并集

 

A

 

1

=demo.query("select * from STUDENTS")

 

2

=demo.query("select * from EMPLOYEE ").derive(interval@y(BIRTHDAY,now()):AGE)

 

3

=A1|A2

 

4

=A3.select(GENDER:"F").avg(AGE)