考虑下表:
`Keys `Values
`A`B `V1`V2
`C`D`E `V1`V2`V3`V4
我想仅展开Keys列,以便将每个键映射到相应的值。结果应该是:
`Keys `Values
`A `V1`V2
`B `V1`V2
`C `V1`V2`V3`V4
`D `V1`V2`V3`V4
`E `V1`V2`V3`V4
ungroup
函数将ungroup应用于所有列,在这种情况下,我想单独应用于Keys列。
答案 0 :(得分:3)
你可以采取几种不同的方式,下面是一种方式 -
ungroupCol:{[tbl;col]
@[tbl where count each tbl col;col;:;raze tbl col]
}
然后:
q)t:flip `Keys`Values!((`A`B;`C`D`E);(`V1`V2;`V1`V2`V3`V4))
q)ungroupCol[t;`Keys]
Keys Values
-----------------
A `V1`V2
B `V1`V2
C `V1`V2`V3`V4
D `V1`V2`V3`V4
E `V1`V2`V3`V4