2014-11-22 4 views
0

У меня есть набор данных, который является выход трубы в ошпаривания, которая выглядит следующим образом:Scala/Жгучие: Поворотная данные

'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 будет работать, но это не кажется правильным. Похоже, что использование функции поворота должно работать, но я не могу решить, как развернуть несколько столбцов.

Любая помощь приветствуется.

ответ

1

Вам нужно объединить два столбца значений в один, а затем вы можете использовать .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) 
    } 

    . 
+0

Я прошел через комбинацию и шарнир в порядке, но не могу ее распаковать. Пара вопросов на карте. 1) на vars: line, следует ли читать v34, v34 вместо V34, V34? Это относится к названию права класса case? 2) Я получаю сообщение об ошибке в строке val, в которой говорится, что он не может найти значение Val. Что именно относятся к каббалу и увеаль? Большое спасибо за вашу помощь. –

+0

Извините, в вопросе 2 автозамены, похоже, меня достали. Ошибка говорит: «Не удается найти значение xval». К чему относятся xval и yval? –

+0

1) Да, извините, это должно было быть v34, конечно 2) Я думаю, это просто побочный эффект # 1: 'val (key, xval, yval) = vars' просто объявляет три новые переменные, и распаковывает в них «варры». Я думаю, это просто смущает, потому что он считает, что 'vars' не определяется из-за опечатки в имени типа. – Dima

Смежные вопросы