如何在 kdb q table 中按列计算空条目?
How can I count the null entries by column in a kdb q table?
如果 table 包含多个空条目,我如何创建一个摘要 table 来描述每列的空条目数?这可以在列数和列名事先未知的一般 table 上完成吗?
q)t: ([] a: 1 2 3 4; b: (2018.10.08; 0Nd; 2018.10.08; 2018.10.08); c: (0N;0N;30;40); d: `abc`def``jkl)
q)t
a b c d
-------------------
1 2018.10.08 abc
2 def
3 2018.10.08 30
4 2018.10.08 40 jkl
预期结果:
columnName nullCount
--------------------
a 0
b 1
c 2
d 1
你可以table使用
q)flip `columnName`nullCount!(key;value)@\:sum null t
columnName nullCount
--------------------
a 0
b 1
c 2
d 1
其中 sum null t
给出每列中空值的字典
q)sum null t
a| 0
b| 1
c| 2
d| 1
然后我们将列名用作键并翻转到 table。
要生成一个 table,其中的列为 headers,空值数和您可以使用的值:
q)tab:enlist sum null t
它征集了一个字典,其中空值的数量作为值,列名作为键:
a b c d
-------
0 1 2 1
如果您随后想要以给定格式使用此文件,则可以使用:
result:([]columnNames:cols tab; nullCount:raze value each tab)
虽然 sum null t
是本例中最简单的解决方案,但它不处理字符串(或嵌套)列。例如,要处理字符串或嵌套列,您需要
q)t: ([] a: 1 2 3 4; b: (2018.10.08; 0Nd; 2018.10.08; 2018.10.08); c: (0N;0N;30;40); d: `abc`def``jkl;e:("aa";"bb";"";()," "))
q){sum$[0h=type x;0=count@'x;null x]}each flip t
a| 0
b| 1
c| 2
d| 1
e| 1
如果 table 包含多个空条目,我如何创建一个摘要 table 来描述每列的空条目数?这可以在列数和列名事先未知的一般 table 上完成吗?
q)t: ([] a: 1 2 3 4; b: (2018.10.08; 0Nd; 2018.10.08; 2018.10.08); c: (0N;0N;30;40); d: `abc`def``jkl)
q)t
a b c d
-------------------
1 2018.10.08 abc
2 def
3 2018.10.08 30
4 2018.10.08 40 jkl
预期结果:
columnName nullCount
--------------------
a 0
b 1
c 2
d 1
你可以table使用
q)flip `columnName`nullCount!(key;value)@\:sum null t
columnName nullCount
--------------------
a 0
b 1
c 2
d 1
其中 sum null t
给出每列中空值的字典
q)sum null t
a| 0
b| 1
c| 2
d| 1
然后我们将列名用作键并翻转到 table。
要生成一个 table,其中的列为 headers,空值数和您可以使用的值:
q)tab:enlist sum null t
它征集了一个字典,其中空值的数量作为值,列名作为键:
a b c d
-------
0 1 2 1
如果您随后想要以给定格式使用此文件,则可以使用:
result:([]columnNames:cols tab; nullCount:raze value each tab)
虽然 sum null t
是本例中最简单的解决方案,但它不处理字符串(或嵌套)列。例如,要处理字符串或嵌套列,您需要
q)t: ([] a: 1 2 3 4; b: (2018.10.08; 0Nd; 2018.10.08; 2018.10.08); c: (0N;0N;30;40); d: `abc`def``jkl;e:("aa";"bb";"";()," "))
q){sum$[0h=type x;0=count@'x;null x]}each flip t
a| 0
b| 1
c| 2
d| 1
e| 1