I am definitly a q-mortal. I would even say a q-baby. Well I have some question how to put together my code from separate lines to a one-liner. I guess there is a way more elegant solution than mine.
How to write the following statements in one line:
q)t1:(3#3)?\:`8
q)t1[;0]:`abc
In this table creation, how can I add another column which I have as list (like with the command ([]id:id_list;data:data_list;.....
)). Till now I am creating another table and doing an inner join on them. I guess that's not very efficient:
`id xkey update id:i from flip (`row1`row2!(1 2;3 4))
For the 1st one you may do:
q)`abc,/:(3#2)?\:`8
abc jognjhck cihanjhp
abc hkpblald aeajbddp
abc blmjhgah ooeiogdj
For 2nd one you may treat the table as a dictionary:
q)tb
row1 row2
---------
1 3
2 4
q)(tb`id): 5 6
q)tb
row1 row2 id
------------
1 3 5
2 4 6
Two options:-
Create a 3*2 matrix of random symbols and append `abc in front.
q)`abc,/:(3#2)?\:`8
Or create 3*3 matrix of random symbols and use functional form of amend to update the first column. This is a more generic approach.
q).[(3#3)?\:`8;(::;0);:;`abc]
I don't see any problem with using just update statement.
q)c:1 2
q)t
row1 row2
---------
1 3
2 4
q)update newCol:c from `t
`t
q)t
row1 row2 newCol
----------------
1 3 1
2 4 2