这可能是一个简单的问题,但我无法让它发挥作用。我想创建一个列varNew,等于一列的一半Price,如果只有一个列var1,并var2具有1的值,var1并且var2只需要0或1。如果两个数值var1和var2是1,那么varNew = Price。所以想要的数据看起来像这样
var1 var2 Price varNew
0 0 10 10
0 1 14 7
1 0 12 6
1 1 20 20
Run Code Online (Sandbox Code Playgroud)
我试过:
update varNew:?[((var1+var2)>0);Price%2;Price] from table 和
varNew:?[(var1=1 and var2=0)|(var1=0 and var2=1);Price%2;Price] from table 和
varNew:?[var1=1 or var2=1;Price%2;Price] from table
但它们没有按预期工作。特别是,它返回 12 而不是 6。这是怎么回事?为什么这些条件不起作用?我该怎么做?
小智 5
一个解决办法是:
q)t:([]var1:0011b;var2:0101b;Price:10 14 12 20)
q)update varNew:?[var1<>var2;Price%2;Price] from t
Run Code Online (Sandbox Code Playgroud)
这是 ? 的众多重载之一。运算符(https://code.kx.com/q/ref/overloads/#query)。在这种形式中,它用作向量条件。