如何在 kdb/q 中比较多个列并使用布尔逻辑更新新列?

问题描述 投票:0回答:1

比较 3 列中的数字,然后根据布尔检查的结果创建一个新列。

id    col1     col2       col3         col4                    
---------------------------------------------

update checkCol:$[(exec col1 from table)~(exec col2 from table1)~(exec col3 from table2);1;0] from table

我知道上面的代码行不通,但它很好地说明了我想要实现的目标。除了标准更新语句之外,还有更好的方法来解决这个问题吗?

q)tb:([] id:1 2 3 4; num1: 20 22 24 26; num2: 21 22 24 27; num3: 20 22 24 28)
q)tb
id num1 num2 num3
-----------------
1  20   21   20  
2  22   22   22  
3  24   24   24  
4  26   27   28  
q)n1:exec num1 from tb
q)n2:exec num2 from tb
q)n3:exec num3 from tb
q){$[y~x;1;0]}'[n1;n2]
0 1 1 0

添加第三列会导致问题

kdb
1个回答
0
投票
update checkCol:1=count distinct each flip (c1;c2;C3) from tb
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.