如何用 KDB 中的 NaN 替换列中的前 10 个条目

时间:2021-03-30 00:26:00

标签: kdb

我正在使用求和对列进行计算。我想手动将 calc 列中的前 n 个条目从 float 更改为 NaN。有人可以告诉我该怎么做吗?

例如,如果我在表 t 中的列现在是 mycol:(1 2 3 4 5 6 7 8 9),我正在尝试获得一个可以用 NaN 替换前 n=4 个条目的函数,所以我的列在表 t 中变成 mycol:(0N 0N 0N 0N 5 6 7 8 9)

非常感谢!

艾米丽

1 个答案:

答案 0 :(得分:1)

我们可以使用修改功能将前 n 项替换为空值。此外,最好根据类型为每列使用适当的空字面量。像这样的事情会起作用:

f: {nullDict: "ijfs"!(0Ni;0Nj;0Nf:`); @[x; til y; :; nullDict .Q.ty x]}

这将修改列表 x 中的前 y 个项目。 .Q.ty 将获取输入的类型,以便我们可以从字典中获取相应的值。

然后您可以将其用于单个列,如下所示:

update mycol: f[mycol;4] from tbl

您也可以一次性执行此操作,以使用函数形式替换具有不同数量项目的多列:

![tbl;();0b;`mycol`mycol2!((f[;4];`mycol);(f[;3];`mycol2))]

请注意,您需要将 nullDict 修改为您需要的任何其他类型。

更新:感谢 Jonathon McMurray 提出了一种使用以下代码为所有原始类型构建 nullDict 的更好方法:

{x!first each x$\:()}.Q.t except " "
相关问题