给出一个包含许多空条目的表,如何创建一个描述每列空数量的摘要表?可以在不知道列数和列名的普通表上完成此操作吗?
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
答案 0 :(得分:3)
您可以使用以下表格制作
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
,然后将列名用作键并翻转到表。
答案 1 :(得分:3)
虽然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
答案 2 :(得分:1)
要生成一个包含以列为标题,空值数和值的表,可以使用:
q)tab:enlist sum null t
其中一个字典以空值作为值,列名作为键:
a b c d
-------
0 1 2 1
如果您随后希望以给定的格式使用它,则可以使用:
result:([]columnNames:cols tab; nullCount:raze value each tab)