我有一个数据集,它是烫伤管道的输出,如下所示:
'Var1, 'Var2, 'Var3, 'Var4 =
a,x,1,2
a,y,3,4
b,x,1,2
b,y,3,4
我试图把它变成这样的东西:
'Var1, 'Var3x, 'Var4x, 'Var3y, 'Var4y =
a,1,2,3,4
b,1,2,3,4
首先,我认为以某种方式使用 flatMap 会起作用,但这似乎不对。似乎使用枢轴函数应该可以工作,但我不太清楚如何枢轴多个列。
任何帮助表示赞赏。
您需要将两个值列合并为一个,然后可以使用 .pivot。像这样的东西:
case class v34(v3: Int, v4: Int)
pipe
.map(('Var3, 'Var4) -> ('V34)) { vars: (Int, Int) => v34(vars._1, vars._2) }
.groupBy('Var1) { _.pivot(('Var2, 'V34) => ('x, 'y)) }
.mapTo(('Var1, 'x, 'y) -> ('Var1, 'Var3x, 'Var4x, 'Var3y, 'Var4y) {
vars: (String,V34,V34) =>
val (key, xval, yval) = vars
(key, xval.v3, xval.v4, yval.v3, yval.v4)
}
.