In[]:=
In[]:=
c=First[b]e=Cases[d=Rest[b],{_?NumberQ..,_String}];
Out[]=
{a,b,c,d,e,f,g,h,i,j,k,l,m}
In[]:=
f=Union[Last[#]&/@e]
Out[]=
{aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk}
In[]:=
g=Cases[e,{_?NumberQ..,#}]&/@f;
In[]:=
h=Most[c]
Out[]=
{a,b,c,d,e,f,g,h,i,j,k,l}
In[]:=
Column[{GraphicsRow[Graphics[Text@#]&/@h,FrameAll,ImageSize600,PlotRangePaddingNone],Row[{GraphicsColumn[Graphics[Text@#]&/@h,ImageSize{50,600},Frame->All,PlotRangePaddingNone],Overlay[{ArrayPlot[Correlation[Most/@g[[1]]],ColorFunctionColorData["Temperature"],FrameNone,ImageSize600,PlotRangePaddingNone,Mesh->True,ColorFunctionScaling->False],GraphicsGrid[Map[NumberForm[#,{3,2}]&,Correlation[Most/@g[[1]]],{2}],ImageSize600,AspectRatio1,PlotRangePadding->None,AlignmentRight]}]}]},AlignmentRight,Spacings0]
Out[]=