gpt4 book ai didi

kdb - 删除较小的重复项

转载 作者:行者123 更新时间:2023-12-04 19:46:37 25 4
gpt4 key购买 nike

在 KDB 中,我有下表:

q)tab:flip `items`sales`prices!(`nut`bolt`cam`cog`bolt`screw;6 8 0 3 0n 0n;10  20 15 20 0n 0n)
q)tab

items sales prices
------------------
nut 6 10
bolt 8 20
cam 0 15
cog 3 20
bolt
screw

在此表中,有 2 个重复项( bolt )。但是,由于第一个“ bolt ”包含更多信息。我想移除“较小” bolt 。

最终结果:

items sales prices
------------------
nut 6 10
bolt 8 20
cam 0 15
cog 3 20
screw

据我了解,如果我使用“distinct”函数,它不是确定性的吗?

最佳答案

一种方法是按项目向前填充,然后 bolt 将继承以前的值。

q)update fills sales,fills prices by items from tab
items sales prices
------------------
nut 6 10
bolt 8 20
cam 0 15
cog 3 20
bolt 8 20
screw

这也可以以函数形式完成,您可以在其中传递表格和 by 列:

{![x;();(!). 2#enlist(),y;{x!fills,/:x}cols[x]except y]}[tab;`items]

如果“更多信息”的意思是“最少空值”,那么您可以计算每行中空值的数量,并且只按包含最少的项目返回那些行:

q)select from @[tab;`n;:;sum each null tab] where n=(min;n)fby items
items sales prices n
--------------------
nut 6 10 0
bolt 8 20 0
cam 0 15 0
cog 3 20 0
screw 2

虽然不推荐这种方法,因为它需要处理行而不是列。

关于kdb - 删除较小的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49525524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com