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 |