润乾——函数(分组选取)

来源:互联网 发布:淘宝mac上的软件能用么 编辑:程序博客网 时间:2024/05/29 09:00

enumGroup()

函数说明: 根据表达式的不同计算结果,返回不同的值,然后按这些值进行分组。本函数:从左到右计算,先出现的表达式先算,如果出现满足的表达式,则返回相应的结果,后面的不再计算。如果没有一个表达式满足条件,而且有缺省值表达式,则返回缺省值,否则返回null。

语法: ds.enumGroup({,termExp1,resultExp1{,term2,resultExp2{,...{,defaultExp}}}})

参数说明: termExp(n) 条件表达式 resultExp(n) 返回结果表达式 defaultExp 缺省值表达式,如果所有表达式结果都不满足,则返回本表达式计算结果

group()

函数说明: 根据分组表达式,从数据集中选出一组组集。

语法: datasetName.group( <selectExp>, ,<filterExp> ) //适用于不需要排序或数据集中已排好序 datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})

参数说明: selectExp 选出的分组表达式,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 descExp 分组前记录的排序顺序,true为逆序,false为顺序 filterExp 过滤表达式 sortExp 分组前记录的排序依据表达式 groupSortExp 分组后对组的排序表达式,一般是汇总运算的表达式,如组合计等 groupDescExp 组排序顺序,true为逆序,false为顺序 rootGroupExp 是否root数据集表达式

返回值: 一组数据的集合,数据类型由selectExp的运算结果来决定

示例:

例1:ds1.group(class) 把数据集ds1中所有记录按照class字段进行分组,并返回每组的class值组成的集合

例2:ds1.group(class, true ) 把数据集ds1中所有记录按照class字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合

例3:ds1.group(class,false,sex=='1') 从数据源ds1中选取性别为"1"的记录,按照class字段升序排列,然后根据class进行分组,并返回每组的class值组成的集合

例4:ds1.group(class, true, sex=='1', id ) 从数据源ds1中选取性别为"1"的记录,按照id字段降序排列,然后根据class进行分组,并返回每组的class值组成的集合

例5:ds1.group(省份,true,,,ds1.sum(工业产值),true) 对数据集ds1按照省份进行分组,分组后求出每组的sum(工业产值),然后按照这个汇总值对组进行逆序排列

groupEx

函数说明: 根据分组表达式,从数据集中选出一组组集。

语法: datasetName.groupEx(selectExp{,filterExp{, "sort_exp1, desc_exp1{;sort_exp2, desc_exp2{;...}}"{,groupSortExp{,groupDescExp{,rootGroupExp}}}}})

参数说明: selectExp 选出的分组表达式,可以是字段列名/列号,也可以是表达式。列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推 filterExp 过滤表达式 sort_exp1 数据排序表达式。按desc_exp1排序。 desc_exp1 指定数据排序的顺序,true表示降序排列,false表示升序排列。 sort_exp2 数据排序表达式。将sort_exp1相同的字段,按desc_exp2排序。 desc_exp2 指定数据排序的顺序,true表示降序排列,false表示升序排列。 ...... groupSortExp 分组后对组的排序表达式,一般是汇总运算的表达式,如组合计等 groupDescExp 组排序顺序,true为逆序,false为顺序 rootGroupExp 是否root数据集表达式 返回值: 一组数据的集合,数据类型由selectExp的运算结果来决定

示例:

例1:ds1.groupEx(sex,,"grade,true;name") 从数据源ds1中选取grade字段列的值并降序排列,然后把name相同的按成绩升序排列,然后按sex字段分组

plot()

函数说明: 根据数据值段进行分组,俗称“按段分组”

语法: datasetName.plot( valueExp, listExp{, filterExp{, eqExp{, ascExp{,rootGroupExp}}}} )

参数说明: valueExp 用于分组的值表达式 ListExp 数据值段列表,同valueExp数据类型相同的数组,要求其中元素从小到大排列 filterExp 过滤表达式 eqExp 返回布尔值的表达式,缺省为false,表示与元素比较时不包含等于 ascExp 返回布尔值的表达式,缺省为true,表示listExp返回的数组按从小到大排,否则为从大到小排 rootGroupExp 是否root数据集表达式

特别说明: ascExp为true(即listExp从小到大排列)时,eqExp为true时,与元素比较时采用<=,eqExp为false时,采用<;ascExp为false(即listExp从大到小排列)时,eqExp为true时,与元素比较时采用>=,eqExp为false时,采用>

返回值: 整数组,代表记录按值段分组后组的顺序,如list(0,1,2,3)代表第一组,第二组,第三组,第四组因此,定义完单元格数据值表达式后还需要定义显示值表达式,比如第一组代表不及格,第二组代表及格等等

示例:

例1:ds1.plot(成绩,list(60,80,90),,true,false) 返回值为list(0,1,2,3) 对数据集ds1的记录按成绩段进行分组,60分以下、60-80,80-90,90分以上等四组同时定义显示值表达式为:map(list(0,1,2,3),list(不及格,及格,良好,优秀))

例2:ds1.plot(成绩,arg1,,true,false) 其中arg1为整数组,其值为list(60,70,80,90)显示值表达式为:map(to(0,count(arg1)),arg2),其中arg2为字符串组,其值为{"不及格","及格","中","良好","优秀"}本例通过参数动态控制分组值段以及结果组的显示值

overlap()

函数说明:对每一条记录依次计算条件表达式,如果满足则把该条记录加入到相应的组里。如果有多个组满足,则这些组中都会含有此条记录。如果都不满足并且有缺省值表达式,则把该条记录加入到缺省组中。组值为以改组的第一条记录计算结果表达式所得到的值。

语法: ds.overlap({hasNullGroup{,termExp1,resultExp1{,term2,resultExp2{,...{,defaultExp}}}}})

参数说明:

hasNullGroup        布尔表达式,true返回空组,false不返回空组

termExp(n)          条件表达式

resultExp(n)        返回结果表达式

defaultExp          缺省值表达式,如果所有表达式结果都不满足,则返回本表达式计算结果