View Table Format with a group by
Here is a module that does exactly the same as you want. 

From Module page.


  
    Create a new view (eg: a list of node).
    Set format Table Rowspan for this view.
    Add some field to this view.
    Group field that has same value.
    Check option "Merge rows in group".
  


Click on settings and group by your results by Principal, Guest, Email Member, Non Email Member. This module will render your table in exactly the same format you want.