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);
[1,0,0,6,0,7]

$ y=1..6
$ nullFill(x,y);
[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