kdb/q 基于行分组的开头创建新列

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

下表提供了一些有关跑步比赛的信息。有多个行属于同一种族,您可以通过查看 FirstID 和 SecondID 列来判断。 SourceID 列将多行连接在一起。

例如,第 2 行是第 1 行的延续,因为第 1 行的 SecondID 是第 2 行的 FirstID。查看这一点的简单方法是按 SourceID 分组,这会保留链的第一个 FirstID 值。

第一ID 第二ID 来源ID 比赛 风格 ...
123ABC 456防御 123ABC 大西洋 定时
456防御 789GHI 123ABC 亚大西洋
349UYH 286IWD 349UYH 太平洋 不定时
286IWD 585YYY 349UYH 亚太平洋
input:([] FirstID:`123ABC`456DEF`349UYH`286IWD; SecondID:`456DEF`789GHI`286IWD`585YYY; SourceID: `123ABC`123ABC`349UYH`349UYH; Race: `Atlantic`SubAtlantic`Pacific`SubPacific; Style: `Timed``Untimed`)

我想根据这些信息添加更多列,即 ParentRace 和 IsTimed,以便输出如下所示:

第一ID 第二ID 来源ID 比赛 风格 家长竞赛 已定时
123ABC 456防御 123ABC 大西洋 定时 大西洋 是的
456防御 789GHI 123ABC 亚大西洋 大西洋 是的
349UYH 286IWD 349UYH 太平洋 不定时 太平洋 没有
286IWD 585YYY 349UYH 亚太平洋 太平洋 没有

ParentRace 是链开头(即开始链的第一行)的 Race 值,并应用于链的其余部分,按 SourceID 分组

IsTimed 显示链的开头是否为“定时”并适用于链的其余部分,按 SourceID 分组

有谁知道如何根据链的初始行添加这两列?如果您需要我澄清,请告诉我。

grouping kdb
1个回答
0
投票
update ParentRace:first Race, isTimed:`No`Yes @ `Timed=first Style by SourceID from input
© www.soinside.com 2019 - 2024. All rights reserved.