segmentby
Syntax
segmentby(func, funcArgs, segment)
Arguments
func is a function.
funcArgs are the parameters of func. It is a tuple if there are more than 1 parameter of func.
segment is the grouping variable.
segment and each of the function argument in funcArgs are vectors of the same size.
Details
segmentby
is very similar to contextby except for how groups are determined. With
contextby
, a group includes all elements with the same value.
With segmentby
, only a block of equal value elements counts as a
group. 2 blocks of equal value elements separated by different values are treated as
2 groups.
Examples
ret = 0.01 -0.02 0.03 -0.04 0.03 -0.02 0.05 -0.01 0.03 -0.04 0.05 -0.04
position = 1 1 1 1 -1 -1 -1 -1 1 1 1 1
t = table(ret, position);
t;
ret | position |
---|---|
0.01 | |
-0.02 | 1 |
0.03 | 1 |
-0.04 | 1 |
0.03 | -1 |
-0.02 | -1 |
0.05 | -1 |
-0.01 | -1 |
0.03 | 1 |
-0.04 | 1 |
0.05 | 1 |
-0.04 | 1 |
update t set cumret=contextby(cumsum, ret, position);
t;
ret | position | cumret |
---|---|---|
0.01 | 1 | 0.01 |
-0.02 | 1 | -0.01 |
0.03 | 1 | 0.02 |
-0.04 | 1 | -0.02 |
0.03 | -1 | 0.03 |
-0.02 | -1 | 0.01 |
0.05 | -1 | 0.06 |
-0.01 | -1 | 0.05 |
0.03 | 1 | 0.01 |
-0.04 | 1 | -0.03 |
0.05 | 1 | 0.02 |
-0.04 | 1 | -0.02 |
update t set cumret=segmentby(cumsum, ret, position);
t;
ret | position | cumret |
---|---|---|
0.01 | 1 | 0.01 |
-0.02 | 1 | -0.01 |
0.03 | 1 | 0.02 |
-0.04 | 1 | -0.02 |
0.03 | -1 | 0.03 |
-0.02 | -1 | 0.01 |
0.05 | -1 | 0.06 |
-0.01 | -1 | 0.05 |
0.03 | 1 | 0.03 |
-0.04 | 1 | -0.01 |
0.05 | 1 | 0.04 |
-0.04 | 1 | 0 |