nullFill

语法

nullFill(X, Y)

参数

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

Y 可以是一个标量,也可以是与 X 长度相同的向量或矩阵。

详情

如果 X 是一个向量或矩阵:

  • 如果 Y 是标量,使用 Y 填充 X 中的 NULL 值。

  • 如果 Y 是一个与 X 等长的向量或矩阵,使用 Y 中与 X 的 NULL 值对应位置的元素替换 X 中的 NULL 值。

如果 X 是一个表,那么 Y 只能是一个标量,使用 Y 填充表中的 NULL 值。注意,填充 NULL 值时,系统会尝试将 Y 进行类型转换。如果 Y 不能转换为表中某列的类型,系统会抛出异常。

nullFill 不改变输入对象的值;nullFill! 会改变输入对象的值。

例子

例1.向量

x=1 NULL NULL 6 NULL 7;
nullFill(x,0);
# output
[1,0,0,6,0,7]

y=1..6
nullFill(x,y);
# output
[1,2,3,6,5,7]

在 SQL 语句中对表中的一列使用 nullFill 函数:

ID=take(1,6) join take(2,6)
date=take(2018.01.01..2018.01.06, 12)
x=3.2 5.2 NULL 7.4 NULL NULL NULL NULL 8 NULL NULL 11
t=table(ID, date, x)
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03
1 2018.01.04 7.4
1 2018.01.05
1 2018.01.06
2 2018.01.01
2 2018.01.02
2 2018.01.03 8
2 2018.01.04
2 2018.01.05
2 2018.01.06 11
update t set x=x.nullFill(avg(x)) context by id;
t;
ID date x
1 2018.01.01 3.2
1 2018.01.02 5.2
1 2018.01.03 5.266667
1 2018.01.04 7.4
1 2018.01.05 5.266667
1 2018.01.06 5.266667
2 2018.01.01 9.5
2 2018.01.02 9.5
2 2018.01.03 8
2 2018.01.04 9.5
2 2018.01.05 9.5
2 2018.01.06 11

例2.矩阵

x=1 NULL 2 NULL 3 4 $ 3:2;
x;
#0 #1
1
3
2 4
x.nullFill(0);
#0 #1
1 0
0 3
2 4

例3.表

t=table(1..6 as id, 2.1 2.2 NULL NULL 2.4 2.6 as x, 4.3 NULL 3.6 6.7 8.8 NULL as y);
nullFill(t, -999999);
id x y
1 2.1 4.3
2 2.2 -999999
3 -999999 3.6
4 -999999 6.7
5 2.4 8.8
6 2.6 -999999

相关函数:isNull, hasNull, bfill, ffill, lfill