bfill

Syntax

bfill(obj, [limit])

Arguments

obj is a vector/matrix/table.

limit is a positive integer.

Details

If obj is a vector: back fill the NULL values in obj with the next non-NULL value.

If obj is a matrix or a table: back fill the NULL values in each column of obj with the next non-NULL value.

Use the optional parameter limit to limit the number of NULL values to back fill for each block of NULL values.

This operation creates a new object and does not change the input obj. Function bfill! changes the input obj.

Examples

$ x=1 2 3 NULL NULL NULL 4 5 6
$ x.bfill();
[1,2,3,4,4,4,4,5,6]

$ x=1 2 3 NULL NULL NULL 4 5 6
$ x.bfill(1);
[1,2,3,,,4,4,5,6]

$ x.bfill!(2);
$ x;
[1,2,3,,4,4,4,5,6]

$ date=[2012.06.12,2012.06.12,2012.06.13,2012.06.14,2012.06.15]
$ sym=["IBM","MSFT","IBM","MSFT","MSFT"]
$ price=[,,26.56,,50.76]
$ qty=[,,4500,5600,6800]
$ timestamp=[09:34:07,09:35:26,09:36:42,09:36:51,09:36:59]
$ t=table(date,timestamp,sym,price,qty)
$ t;

date

timestamp

sym

price

qty

2012.06.12

09:34:07

IBM

2012.06.12

09:35:26

MSFT

2012.06.13

09:36:42

IBM

26.56

4500

2012.06.14

09:36:51

MSFT

5600

2012.06.15

09:36:59

MSFT

50.76

6800

$ t.bfill()

date

timestamp

sym

price

qty

2012.06.12

09:34:07

IBM

26.56

4500

2012.06.12

09:35:26

MSFT

26.56

4500

2012.06.13

09:36:42

IBM

26.56

4500

2012.06.14

09:36:51

MSFT

50.76

5600

2012.06.15

09:36:59

MSFT

50.76

6800

select date, timestamp, sym, price.bfill() as price, qty.bfill() as qty from t context by sym;

date

timestamp

sym

price

qty

2012.06.12

09:34:07

IBM

26.56

4500

2012.06.13

09:36:42

IBM

26.56

4500

2012.06.12

09:35:26

MSFT

50.76

5600

2012.06.14

09:36:51

MSFT

50.76

5600

2012.06.15

09:36:59

MSFT

50.76

6800