【问题标题】:How do I create a table in kdb using different data of different lengths?如何使用不同长度的不同数据在 kdb 中创建表?
【发布时间】:2021-05-20 21:50:11
【问题描述】:
count times:102
count area:3
count no.of_people:2

t:ungroup([]time:times;area:(count [times])#enlist area;no.of_people:count[times]#enlist no.of_people )

当前出现长度错误。 我错过了什么?

【问题讨论】:

    标签: kdb


    【解决方案1】:

    ungroup'length 失败,因为每列的条目数不一致,IE area 有 3 个条目,no.of_people 有 2 个。

    q)times:102?.z.t
    q)area:`area1`area2`area3
    q)no.of_people:10 20
    q)([]time:times;area:(count [times])#enlist area;no.of_people:count[times]#enlist no.of_people)
    time         area              no.of_people
    -------------------------------------------
    19:01:02.988 area1 area2 area3 10 20
    16:10:13.387 area1 area2 area3 10 20
    00:42:09.536 area1 area2 area3 10 20
    15:13:03.964 area1 area2 area3 10 20
    08:35:51.109 area1 area2 area3 10 20
    ..
    

    从您的描述中不清楚您想要的输出是什么,但是如果您从列声明中删除enlist,则会返回一个表。

    / This returns 102 lists of 10 20
    q)count[times]#enlist no.of_people
    10 20
    10 20
    10 20
    10 20
    10 20
    ..
    / This returns one 102 item list of 10 20 repeated
    q)count[times]#no.of_people
    10 20 10 20 10 20 10 20 10 20 10 20 10 20 10 20 10 20 10 20 10 20 10 20 10 20..
    q)([]time:times;area:(count [times])#area;no.of_people:count[times]#no.of_people )
    time         area  no.of_people
    -------------------------------
    19:01:02.988 area1 10
    16:10:13.387 area2 20
    00:42:09.536 area3 10
    15:13:03.964 area1 20
    08:35:51.109 area2 10
    ..
    

    否则,要让您的初始 ungroup 正常工作,您需要确保每行的列具有相同数量的条目(每行具有一个条目的列是“向量扩展的”)。

    q)([]time:times;area:(count [times])#enlist area;no.of_people:(count [times])#enlist count[area]#no.of_people)
    time         area              no.of_people
    -------------------------------------------
    19:01:02.988 area1 area2 area3 10 20 10
    16:10:13.387 area1 area2 area3 10 20 10
    00:42:09.536 area1 area2 area3 10 20 10
    15:13:03.964 area1 area2 area3 10 20 10
    08:35:51.109 area1 area2 area3 10 20 10
    ..
    q)ungroup([]time:times;area:(count [times])#enlist area;no.of_people:(count [times])#enlist count[area]#no.of_people)
    time         area  no.of_people
    -------------------------------
    19:01:02.988 area1 10
    19:01:02.988 area2 20
    19:01:02.988 area3 10
    16:10:13.387 area1 10
    16:10:13.387 area2 20
    ..
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2019-07-15
      • 2023-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多