indexedSeries

Syntax

indexedSeries(index, value)

Arguments

index and value are vectors of the same length. index must be monotonically increasing with no duplicate values.

Details

indexedSeries supports alignment operations for panel data. When performing binary operations between matrices or vectors, calculations are performed on the corresponding elements, and the shape of these matrices or vertors must be the same.

But when performing binary operations between indexed series or between indexed series and indexed matrix, the data is automatically aligned according to the row or column labels (index), and the shape of the matrices or series can be the same or not.

The following binary operations are supported:

(1) Arithmetic operators and functions: +, -, *, /(exact division), (ratio), %(mod), pow

(2) Logical operators and functions: <, <=, >, >=, ==, !=, &&, ||, &, |, ^

(3) Sliding window functions: mwavg, mwsum, mbeta, mcorr, mcovar

(4) Cumulative window functions: cumwavg, cumwsum, cumbeta, cumcorr, cumcovar

(5) Aggregate functions: wavg, wsum, beta, corr, covar

Examples

Example 1. Length can be equal or unequal in operations between indexed series, The data is aligned according to the index.

$ s1 = indexedSeries(2012.01.01..2012.01.04, [10, 20, 30, 40])
$ s2 = indexedSeries(2011.12.30..2012.01.01, [50, 60, 70])
$ res = s1 + s2

col1

2011.12.30

2011.12.31

2012.01.01

80

2012.01.02

2012.01.03

2012.01.04

Example 2. In a calculation with an indexed series and a vector, the length must be equal.

$ s1 = indexedSeries(2012.01.01..2012.01.04, [10, 20, 30, 40])
$ v = [1,2,3,4]
$ res = s1+v

col1

2012.01.01

11

2012.01.02

22

2012.01.03

33

2012.01.04

44

Example 3. In a calculation with an indexed series and an indexed matrix, the inputs are aligned based on the index.

$ s1 = indexedSeries(2012.01.01 2012.01.03 2012.01.04 2012.01.06, [10, 20, 30, 40])
$ m = matrix(1..6, 11..16).rename!(2012.01.01..2012.01.06,`x`y).setIndexedMatrix!()
$ s1 + m

IBM

MSFT

2012.01.01

11

21

2012.01.02

2012.01.03

23

33

2012.01.04

34

44

2012.01.05

2012.01.06

46

56

Example 4. In a calculation with an indexed series and a matrix without index, they must be of the same length.

$ s1 = indexedSeries(2012.01.01..2012.01.04, [10, 20, 30, 40])
$ m = matrix([1,1,1,1], [2,2,2,2])
$ res = s1 pow m

col1

col2

10

100

20

400

30

900

40

1,600