ffill

Syntax

ffill(obj, [limit])

Arguments

obj is a vector/matrix/table.

limit is a positive integer that specifies the number of NULL values to forward fill for each block of NULL values.

Details

If obj is a vector, forward fill the NULL values in obj with the previous non-NULL value.

If obj is a matrix or a table, forward fill the NULL values in each column of obj with the previous non-NULL value.

This operation creates a new vector and does not change the input vector. Function ffill! changes the input vector.

Note: The only difference between ffill and ffill! is that the latter assigns the result to obj and thus changing the value of obj after the execution.

Examples

Example 1

x=1 2 3 NULL NULL NULL 4 5 6
x.ffill();
// output
[1,2,3,3,3,3,4,5,6]

x;
// The value of x is not changed.
[1,2,3,,,,4,5,6]

Example 2: Specify parameter limit.

x=1 2 3 NULL NULL NULL 4 5 6
x.ffill(1);
// output
[1,2,3,3,,,4,5,6]
                
x.ffill(2);
x;
// output
[1,2,3,3,3,,4,5,6]

Example 3: Specify obj as a table.

date=[2012.06.12,2012.06.12,2012.06.13,2012.06.14,2012.06.15]
sym=["IBM","MSFT","IBM","MSFT","MSFT"]
price=[40.56,26.56,,,50.76]
qty=[2200,4500,,5600,]
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 40.56 2200
2012.06.12 09:35:26 MSFT 26.56 4500
2012.06.13 09:36:42 IBM
2012.06.14 09:36:51 MSFT 5600
2012.06.15 09:36:59 MSFT 50.76
t.ffill();
date timestamp sym price qty
2012.06.12 09:34:07 IBM 40.56 2200
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 26.56 5600
2012.06.15 09:36:59 MSFT 50.76 5600
select date, timestamp, sym, price.ffill() as price, qty.ffill() as qty from t context by sym;
date timestamp sym price qty
2012.06.12 09:34:07 IBM 40.56 2200
2012.06.13 09:36:42 IBM 40.56 2200
2012.06.12 09:35:26 MSFT 26.56 4500
2012.06.14 09:36:51 MSFT 26.56 5600
2012.06.15 09:36:59 MSFT 50.76 5600