Преобразование таблицы KDB в словарь специального формата - PullRequest
1 голос
/ 17 июня 2020

Я новичок в KDB / Q, у меня есть таблица с двумя столбцами, как показано ниже:

id      value
100       a
101       b
100       c
102       d
103       e
100       f
102       g
101       e

Мне нужно преобразовать эту таблицу в группу словарей по идентификатору, как в этом формате

id  | x1   x2  x3  x4  x5  x6  x7  x8 
100 | a    ::  c   ::  ::   f  ::  ::
101 | ::   b  ::   ::  ::   :: ::  e
102 | ::  ::  ::   d   ::   ::  g  ::  
103 | ::  ::  ::   ::   e   f  ::  ::

Я пробовал использовать by, но он дает мне только группу по идентификатору, неспособную преобразовать, например, таблицу с ключом или словарь

может кто-нибудь помочь мне в этом. Название столбцов (x1, x2 et c не важны).

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Похоже, вы хотите повернуть: https://code.kx.com/q/kb/pivoting-tables/

q)t:([]id:100 101 100 102 103 100 102 101;val:`a`b`c`d`e`f`g`e)
q)exec distinct[t`val]#val!val by id:id from t
id | a b c d e f g
---| -------------
100| a   c     f
101|   b     e
102|       d     g
103|         e
1 голос
/ 17 июня 2020

Думаю, вы ищете exec by from table

q)t:([]id:100 101 100 102 103 100 102 101;val:`a`b`c`d`e`f`g`e)
q)exec val by id from t
100| `a`c`f
101| `b`e
102| `d`g
103| ,`e
q)// if you need the (::)
q)exec {@[count[t]#(::);x;:;y]}[i;val] by id from t
100| `a :: `c :: :: `f :: ::
101| :: `b :: :: :: :: :: `e
102| :: :: :: `d :: :: `g ::
103| :: :: :: :: `e :: :: ::
...