kdb+:用 0 替换空整数
kdb+: replace null integer with 0
考虑以下 table:
myTable:
a b
-------
1
2
3 10
4 50
5 30
如何用零替换 b
的空单元格?所以结果将是:
a b
-------
1 0
2 0
3 10
4 50
5 30
现在我在做:
myTable: update b:{$[x~0Ni;0;x]}'b from myTable
但我想知道是否有 better/easier 解决方案可以做到这一点。
使用 fill operator (^
)
示例Table:
q) tbl:flip`a`b!(2;0N)#10?0N 0N 0N,til 3
a b
---
0 2
1 1
1 1
1
1
用 0 填充所有列中的空值:
q)0^tbl
a b
---
0 2
1 1
1 1
0 1
1 0
仅在选择列中用 0 填充空值:
q)update 0^b from tbl
a b
---
0 2
1 1
1 1
1
1 0
在某些情况下,当您想从先前的非空值填充空值时,可以使用 fills
函数。
q)tbl:flip`a`b!(2;0N)#10?0N 0N 0N,til 3
a b
---
2 1
1
1 2
0
update fills a, fills b from tbl
q)a b
---
2 1
2 1
2 1
1 2
0 2
使用 fills
聚合
q)tbl:update s:5?`g`a from flip`a`b!(2;0N)#10?0N 0N 0N,til 3
a b s
-----
1 a
2 a
0 0 g
2 2 g
0 a
q)update fills a, fills b by s from tbl
a b s
-----
1 a
1 2 a
0 0 g
2 2 g
0 2 a
考虑以下 table:
myTable:
a b
-------
1
2
3 10
4 50
5 30
如何用零替换 b
的空单元格?所以结果将是:
a b
-------
1 0
2 0
3 10
4 50
5 30
现在我在做:
myTable: update b:{$[x~0Ni;0;x]}'b from myTable
但我想知道是否有 better/easier 解决方案可以做到这一点。
使用 fill operator (^
)
示例Table:
q) tbl:flip`a`b!(2;0N)#10?0N 0N 0N,til 3
a b
---
0 2
1 1
1 1
1
1
用 0 填充所有列中的空值:
q)0^tbl
a b
---
0 2
1 1
1 1
0 1
1 0
仅在选择列中用 0 填充空值:
q)update 0^b from tbl
a b
---
0 2
1 1
1 1
1
1 0
在某些情况下,当您想从先前的非空值填充空值时,可以使用 fills
函数。
q)tbl:flip`a`b!(2;0N)#10?0N 0N 0N,til 3
a b
---
2 1
1
1 2
0
update fills a, fills b from tbl
q)a b
---
2 1
2 1
2 1
1 2
0 2
使用 fills
聚合
q)tbl:update s:5?`g`a from flip`a`b!(2;0N)#10?0N 0N 0N,til 3
a b s
-----
1 a
2 a
0 0 g
2 2 g
0 a
q)update fills a, fills b by s from tbl
a b s
-----
1 a
1 2 a
0 0 g
2 2 g
0 2 a