kdb/q -- 如何按特定分组对行进行编号

Ven*_*tta 0 kdb

我有带date;sym列的表。但是每个日期可能有多个符号。我想对每个日期中符号的出现次数进行编号

例如:

date        sym 
-------------------
2019.06.04  ABC
2019.06.04  DEF
2019.06.04  ABC
2019.06.05  DEF
2019.06.05  ABC
Run Code Online (Sandbox Code Playgroud)

会给我

date        sym   c 
-------------------
2019.06.04  ABC   1
2019.06.04  DEF   1
2019.06.04  ABC   2   / here ABC appears for the second time on this date. 
2019.06.05  DEF   1
2019.06.05  ABC   1
Run Code Online (Sandbox Code Playgroud)

小智 5

这可能更简洁一些,这里的 c 列只是按日期和符号的每个组合分组的所有行的运行总和。

q)t:([]date:2019.06.04+0 0 0 1 1;sym:`ABC`DEF`ABC`DEF`ABC)

q)update c:sums i=i by date,sym from t

date       sym c
----------------
2019.06.04 ABC 1
2019.06.04 DEF 1
2019.06.04 ABC 2
2019.06.05 DEF 1
2019.06.05 ABC 1
Run Code Online (Sandbox Code Playgroud)