分段

阅读(2) 标签: 分段, 条件, 计算式,

语法:

[<固定条件针对的计算式>] [固定条件或记录数] [<数量>] [条件 <条件式>] [分区 <分区列>] [命名 <新列名>]

本功能的作用是按顺序将记录分段,即按记录顺序将计算出的段号或组号(初值为1)赋予新列,直至满足条件时才使组号递增(等价于不满足条件时组号不变)。条件分为三种,第1种是固定条件,包括某字段是否变化、不变、变大、未变大、变小、未变小。第2种是按记录数量分组,包括:每N条记录分一组(最后一组可能不足N)、总共分为M个组。第3种是任意条件式。

其中,第1种条件固定条件,对应参数固定条件或记录数的枚举值:变化、不变、变大、未变大、变小、未变小,这6个枚举值属于"固定条件"

2种条件按记录数分组,对应参数固定条件或记录数的枚举值:总共、每隔,这2个枚举值属于"固定记录数"

3种条件任意条件式,对应参数条件 <条件式>

参数:固定条件针对的计算式

1种条件固定条件所针对的计算式,最简单的计算式是单列。非必要参数;类型是计算式;参数名必须省略,参数值不能省略。本参数不支持跨行计算和聚合计算,即计算式里不能含有F[i]F[a:b]形式的相对位置计算,也不能有集合的求和、平均等聚合计算。

例子:

某股票股价表(焦点表)已按日期排序。

日期  收盘价

2021-01-01  10.2 

2021-01-02  11 

2021-01-03  12.1 

2021-01-04  11.3 

2021-01-05  9.2

2021-01-07  11 

2021-01-08  9.1

目标:为新字段上涨标志字段填充值,上涨标志相同的记录数大于等于2时表示连续上涨,等于1时表示下跌或持平。相当于用分段功能在上涨标志字段中填入组号,针对的列是收盘价,固定条件是"变小"

NLC:分段 收盘价; 变小; 命名 上涨标志

结果:

日期  收盘价  上涨标志

2021-01-01  10.2  1

2021-01-02  11  1

2021-01-03  12.1  1

2021-01-04  11.3  2

2021-01-05  9.2 3

2021-01-07  11  3

2021-01-08  9.1 4

分析:日期2021-01-012021-01-03的记录的上涨标志(组号)相同,这组记录共3条,说明连续上涨了3天。

参数:固定条件或记录数

本参数对应第1种条件固定条件和第2种条件按记录数分组。非必要参数;类型是枚举;参数名必须省略,参数值不能省略。

1种固定条件,有6个枚举值如下:

变化:当参数固定条件针对的计算式发生变化时,组号递增。

不变:当参数固定条件针对的计算式不发生变化时,组号递增。

变大:当参数固定条件针对的计算式变大时,组号递增。

未变大:当参数固定条件针对的计算式未变大(不变或变小)时,组号递增。

变大:当参数固定条件针对的计算式变小时,组号递增。

未变大:当参数固定条件针对的计算式未变小(不变或变大)时,组号递增。

对焦点表的新列"标志"按顺序填入组号,当字段月份不发生变化时,让组号递增,月份变化时组号不变。NLC:分段 月份; 不变; 命名 标志

 

2种条件按记录数分组,注意此时不要参数固定条件针对的计算式,但必须要参数数量固定条件或记录数2个枚举值如下:

总共:将记录的总数量大致均分为M组,每组的组号相同,因为无法保证整除,所以是大致均分。比如10条记录总共分4组,组号依次是[1,1,1,2,2,2,3,3,3,4]

每隔:每隔N条记录分一组,每组的组号相同,最后一组可能不足N条。

例子:

某股票股价表(焦点表)已按日期排序。

日期  收盘价

2021-01-01  10.2  1

2021-01-02  11  1

2021-01-03  12.1  1

2021-01-04  11.3  2

2021-01-05  9.2 3

2021-01-07  11  3

2021-01-08  9.1 4

目标:每3个工作日为一组,向新字段"组号"填入递增的组号。NLC:分段 每隔; 3; 命名 组号

结果:

日期  收盘价  组号

2021-01-01  10.2  1  1

2021-01-02  11  1  1

2021-01-03  12.1  1  1

2021-01-04  11.3  2  2

2021-01-05  9.2 3  2

2021-01-07  11  3  2

2021-01-08  9.1 4  3

参数:数量

当参数固定条件或记录数的枚举值为总共和每隔时,需要用本参数指定这两个枚举值对应的总组数和组内成员数。非必要参数;类型为整数;参数名必须省略。

参数:条件 <条件式>

在第1种条件固定条件和第2种条件按记录数量分组满足不了的情况下,需要用第3种条件任意条件式来计算分段。这种情况下不需要使用前3个参数。非必要参数表;类型是条件计算式;参数名不能省略。本参数支持跨行计算和聚合计算,即计算式里可以含有F[i]F[a:b]形式的相对位置计算,也可以有集合的求和、平均等聚合计算。

例子:

某股票股价表(焦点表)已按日期排序。

目标:在焦点表上新建字段"上涨标志"并填入组号,组号从1开始,当条件"收盘价<收盘价[-1]"成立时组号递增,该条件不成立时组号不变。

NLC: 分段 条件 收盘价<收盘价[-1]; 命名 上涨标志

分析:本例的条件式简单,可以用固定条件代替,所以等价于:分段 收盘价; 变小; 命名 上涨标志

特别地,可以用本参数表达"当某计算式等于或不等于某值时,组号递增"

给焦点表的新列"编号"1开始赋值,当条件是"月份不等于3"时编号递增,否则编号不变。NLC:分段 条件 (月份 不等于 3); 命名 编号

参数:分区 <分区列>

按分区计算分段号,各区之间互不影响,概念上类似SQLPARTITION BY。非必要参数;类型是(字段)标识;参数名不能省略。

参数:命名 <新列名>

新列名,组号将赋予该新列。必要参数;类型是(字段)标识;参数名不能省略。

目标:用分段功能给焦点表的新列"新组号"填入组号,条件是"收盘价<收盘价[-1]"

NLC: 分段 条件 收盘价<收盘价[-1]; 命名 新组号