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 |