给定一个框架:Frame<(string * int * int),int>
let df =
[ (("N1", 100,1), "C1", 1.0); (("N2",100,2), "C1", 3.1)
(("N3",100,3), "C1", 4.0); (("N4",100,4), "C1", -6.4);
(("N1", 200,5), "C2", 1.0); (("N2",200,6), "C2", 7.1)
(("N3",200,7), "C2", 4.0); (("N4",200,8), "C2", -2.4);
(("N1", 100,1), "C2", 1.0); (("N2",100,2), "C2", 5.1)
(("N3",100,3), "C2", 4.0); (("N4",100,4), "C2", -8.4);
(("N1", 200,5), "C1", 1.0); (("N2",200,6), "C1", 1.1)
(("N3",200,7), "C1", 4.0); (("N4",200,8), "C1", -9.4)]
|> Frame.ofValues
我希望能够按行键元组中的第二项对列进行分组 - 所以按 100 和 200 分组,然后将框架更改为Frame<(string*int),(int*int)>
似乎我必须使用Frame.Transpose然后Frame.groupRowsUsing对列进行分组,但我不知道如何在选择器函数中获得 100/200。
输出应如下所示:
(100,C1) (100,C2) (200,C1) (200,C2)
N1 1 -> 1 1 1 1
N2 2 -> 3.1 5.1 1.1 7.1
N3 3 -> 4 4 4 4
N4 4 -> -6.4 -8.4 -9.4 -2.4