Как преобразовать число с плавающей запятой в целочисленный тип данных в KDB? - PullRequest
0 голосов
/ 04 августа 2020

У меня есть таблица в KDB (Q) со столбцом размера, который в настоящее время находится в формате с плавающей запятой. Как преобразовать весь столбец из числа с плавающей запятой в целое с усечением десятичного разряда?

Ответы [ 2 ]

3 голосов
/ 04 августа 2020

Вы можете сделать это, обновив свою таблицу

q)tab:([]bid:1000?5f;price:1000?5f;size:1000?100f)
q)exec t from meta tab
"fff"
q)update "i"$size from `tab
`tab
q)exec t from meta tab
"ffi"

В приведенном выше примере уместным моментом является применение "i"$, которое «преобразует» столбец размера из числа с плавающей точкой в ​​целое число

2 голосов
/ 05 августа 2020

Другой способ сделать это - использовать @ изменить для обновления столбца (ов):

q)t:([]sym:500?`3;px:500?10f;size:500?100f)
q)3#t
sym px       size
---------------------
gdh 7.678514 95.25017
jlb 2.345028 42.09728
nln 5.553286 98.80532
q)t:@[t;`size;"i"$] / can also use `t to update t
q)3#t
sym px       size
-----------------
gdh 7.678514 95
jlb 2.345028 42
nln 5.553286 98

Я думаю, что также стоит отметить, что функции пола / потолка округляет числа вниз / вверх соответственно и работает немного быстрее, чем "i"$ в этом случае, однако эти функции приводят столбец к long вместо int:

q)meta@[t;`size;floor]
c   | t f a
----| -----
sym | s
px  | f
size| j
...