//示例表
table:([[col1:20 40 30 0w; col2:4?4; col3:100200 0w 300)
我的解决方案
{。[table;(其中0w = table [x]; x);:; 0n]}'[来自元表的exec c,其中t =“ f”]
我不确定我有没有办法。这只是返回我不需要的每个更改的列表。我只希望返回的原始表替换为空
谢谢!
答案 0 :(得分:2)
再充实您的问题会更好。您是否一直期望它是浮点列?该表将有很多列吗?是否会有混合的字符串/符号列使事情复杂化? 如果表中的列数很少,则可以进行更新
q)show t
col1 col2 col3
--------------
20 1 100
40 2 200
30 2 0w
0w 1 300
q)inftonull:{(x where x=0w):0n;x}
q)update inftonull col1, inftonull col3 from t
col1 col2 col3
--------------
20 2 100
40 1 200
30 0
3 300
如果您认为列名可能会更改或具有大量列,则可以尝试进行功能更新(您可以在其中将列名作为参数传递)
q){![t;();0b;x!inftonull,/:x,:()]}`col1`col3
col1 col2 col3
--------------
20 1 100
40 2 200
30 2
1 300
如果您的表仅包含数字数据,例如
q)flip{(x where x=.Q.t[type x]$0w):x 0N;x}each flip t
col1 col2 col3
--------------
20 2 100
40 1 200
30 0
3 300
可能会起作用,它试图解释数字数据具有不同类型的事实。 如果您的数据将包含字符串/符号列,则最后一个示例将无效