填充 NULL 值

DolphinDB提供了4种填充NULL值的方法:

  1. bfillbfill! :使用NULL后的非NULL元素填充NULL值。

  2. ffillffill! :使用NULL前的非NULL元素填充NULL值。

  3. lfilllfill! :线性填充非NULL元素之间的NULL值。

  4. nullFillnullFill! :用指定值填充NULL值。

对于 bfillffill,我们可以使用可选参数limit来指定需要填充的NULL值。

  • 例1

$ 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.lfill() context by id;
$ t;

ID

date

x

1

2018.01.01

3.2

1

2018.01.02

5.2

1

2018.01.03

6.3

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

9

2

2018.01.05

10

2

2018.01.06

11

$ update t set x=x.bfill(1) context by id;
$ t;

ID

date

x

1

2018.01.01

3.2

1

2018.01.02

5.2

1

2018.01.03

6.3

1

2018.01.04

7.4

1

2018.01.05

1

2018.01.06

2

2018.01.01

2

2018.01.02

8

2

2018.01.03

8

2

2018.01.04

9

2

2018.01.05

10

2

2018.01.06

11

$ update t set x=x.bfill() context by id;
$ t;

ID

date

x

1

2018.01.01

3.2

1

2018.01.02

5.2

1

2018.01.03

6.3

1

2018.01.04

7.4

1

2018.01.05

1

2018.01.06

2

2018.01.01

8

2

2018.01.02

8

2

2018.01.03

8

2

2018.01.04

9

2

2018.01.05

10

2

2018.01.06

11

$ update t set x=x.ffill() context by id;
$ t;

ID

date

x

1

2018.01.01

3.2

1

2018.01.02

5.2

1

2018.01.03

6.3

1

2018.01.04

7.4

1

2018.01.05

7.4

1

2018.01.06

7.4

2

2018.01.01

8

2

2018.01.02

8

2

2018.01.03

8

2

2018.01.04

9

2

2018.01.05

10

2

2018.01.06

11

  • 例2

$ 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