Я делаю расчет по столбцам с помощью суммирования. Я хочу вручную изменить мои первые n записей в моем столбце calc с float на NaN. Кто-нибудь может посоветовать мне, как это сделать?

Например, если мой столбец в таблице t теперь mycol: (1 2 3 4 5 6 7 8 9), я пытаюсь получить функцию, которая может заменить первые n = 4 записи на NaN, поэтому мой столбец в таблице t становится mycol: (0N 0N 0N 0N 5 6 7 8 9)

Спасибо огромное!

Эмили

kdb q
-2
Emily Wilson 30 Мар 2021 в 03:26

1 ответ

Лучший ответ

Мы можем использовать функцию изменения, чтобы заменить первые n элементов нулевым значением. Кроме того, было бы лучше использовать соответствующий нулевой литерал для каждого столбца в зависимости от типа. Что-то вроде этого могло бы сработать:

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

Это изменит первые y элементов в списке x. .Q.ty получит тип для ввода, чтобы мы могли получить соответствующее значение из словаря.

Затем вы можете использовать это для одного столбца, например:

update mycol: f[mycol;4] from tbl

Вы также можете сделать это за один раз для нескольких столбцов с различным количеством элементов, которые нужно заменить, используя функциональную форму:

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

Обратите внимание, что вам нужно будет изменить nullDict любыми другими типами, которые вам нужны.

0
shree.pat18 30 Мар 2021 в 05:29