ffill

语法

ffill(obj, [limit])

详情

  • 如果 obj 是一个向量,使用 NULL 值前的非空元素来填充 NULL 值。

  • 如果 obj 是一个矩阵或表,对于表中的每一列,使用 NULL 值前的非空元素来填充 NULL 值。

注意: 该函数会生成新的对象,不会改变输入的对象;而函数 ffill! 会改变输入的对象。

参数

obj 可以是向量、矩阵或表。

limit 是正整数,表示需要填充的 NULL 值的数量。

例子

例1.

x=1 2 3 NULL NULL NULL 4 5 6
x.ffill();

返回:[1,2,3,3,3,3,4,5,6]

x;

返回:[1,2,3,,,,4,5,6]。由此可见,x 中的空值没有被填充。

例2. 指定参数 limit

x=1 2 3 NULL NULL NULL 4 5 6
x.ffill(1);

返回:[1,2,3,3,,,4,5,6]

x.ffill(2);
x;

返回:[1,2,3,3,3,,4,5,6]

例3. 指定 obj 为一个表.

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