首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建一个布尔列,显示kdb+中两个其他列之间的比较

创建一个布尔列,显示kdb+中两个其他列之间的比较
EN

Stack Overflow用户
提问于 2017-06-14 23:04:08
回答 3查看 1.5K关注 0票数 1

我现在正在学习kdb+/q,我有一个数据表。我想获取两列数据(只是数字),比较它们,并创建一个新的布尔列,该列将显示列1中的值是否大于或等于列2中的值。

我习惯于使用update命令创建一个新列,但是我不知道如何确保它是布尔值,如何比较这些值以及显示“大于或等于”的方法-是否可以为此执行简单的Y/N输出?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-14 23:10:30

代码语言:javascript
复制
/ dummy data
q) show t:([] a:1 2 3; b: 0 2 4)
    a b
    ---
    1 0
    2 2
    3 4

/ add column name 'ge' with value from b>=a
q) update ge:b>=a from t
    a b ge
    ------
    1 0 0
    2 2 1
    3 4 1
票数 6
EN

Stack Overflow用户

发布于 2017-06-14 23:13:05

使用向量条件:http://code.kx.com/q/ref/lists/#vector-conditional

代码语言:javascript
复制
    q)t:([]c1:1 10 7 5 9;c2:8 5 3 4 9)
    q)r:update goe:?[c1>=c2;1b;0b] from t
    c1 c2 goe
    -------------
    1  8  0
    10 5  1
    7  3  1
    5  4  1
    9  9  1

使用meta确认goe列是布尔型的:

代码语言:javascript
复制
  q)meta r
   c      | t f a
   -------| -----
   c1     | j
   c2     | j
   goe    | b
票数 1
EN

Stack Overflow用户

发布于 2018-06-03 08:20:47

操作运算符可以很好地处理向量,但在某些情况下,当函数需要原子作为执行操作的输入时,您可能希望使用' (each-both <= )。

例如,将符号串的长度与另一个列值进行比较

代码语言:javascript
复制
q)f:{x<=count string y}
q)f[3;`ab]
0b

q)t:([] l:1 2 3; s: `a`bc`de)
q)update r:f'[l;s] from t
l s  r
------
1 a  1
2 bc 1
3 de 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44548408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档