2

我有一个带有列的表a, b, c。我可以以某种方式使用函数形式计算cor[a;a],cor[a;b]的相关矩阵吗?cor[a;c]

?[table; (); 0b; (`aa`ab`ac)!((cor; `a; `a); (cor; `a; `b);(cor; `a; `b));

如何生成最后一个参数的列表?(cor; a;b)

4

2 回答 2

5
q)show t:([]a:5?1.0;b:5?1.0;c:5?1.0)
a          b         c
------------------------------
0.389056   0.949975  0.6919531
0.391543   0.439081  0.4707883
0.08123546 0.5759051 0.6346716
0.9367503  0.5919004 0.9672398
0.2782122  0.8481567 0.2306385

q)u cor/:\:u:flip t
 | a          b          c
-| --------------------------------
a| 1          -0.1328262 0.6671159
b| -0.1328262 1          -0.1830702
c| 0.6671159  -0.1830702 1
于 2016-10-21T19:16:23.930 回答
0

所以手动输入表格:

q)t:([] a:10?10; b:10?10; c:10?10)
q)?[t;();0b;`aa`ab`ac!((cor;`a;`a);(cor;`a;`b);(cor;`a;`c))]
   aa ab         ac
   -----------------------
   1  -0.2530506 0.7966834

如果您想生成最后一个参数,假设您希望第一列的所有排列与所有列相结合:

q)a:{(`$raze'[string x])!(cor),/:x}{x[0],/:x}cols t;
q)?[t;();0b;a]
   aa ab         ac
   -----------------------
   1  -0.2530506 0.7966834

如果您想要所有列排列:

q)a:{(`$raze'[string x])!(cor),/:x}{x cross x}cols t
q)?[t;();0b;a]
   aa ab         ac        ba         bb bc        ca        cb        cc
   ----------------------------------------------------------------------
   1  -0.2530506 0.7966834 -0.2530506 1  -0.268787 0.7966834 -0.268787 1
于 2013-11-25T22:52:22.267 回答