Javascript: transforma la matriz de respuesta de objetos a través de lodash o subrayado o corejavascript

Estoy trabajando con highChart para crear un gráfico de columnas. De todos modos, llegué a crear el siguiente arrayofObj a través de la comunicación con la base de datos.

Ahora, necesito transformar el siguientesource matriz de objeto a la salida inferior.

var source = [
{data: 258, name: '2014'}
{data: 18, name: '2016'}
{data: 516, name: '2014'}
{data: 0, name: '2014'}
{data: 354, name: '2014'}
{data: 18, name: '2016'}
]`

Convierta esta matriz de objetos a

Output

[{
    name: '2014',
    data: [258, 516, 354]
  }, {
    name: '2016',
    data: [18, 0, 18]
}]

Básicamente, quiero que mi matriz se agrupe por nombre (año) y los datos deben estar en la matriz

Aquí están las soluciones que he aplicado.

var source = [];
_.each(source, function(singlerec) {
      source.push({
        name: singlerec.name,
        data: singlerec.data  // Here It only assign single record
      });
    });

Respuestas a la pregunta(3)

Su respuesta a la pregunta