DataTable - Grouping Columns can be grouped at header and footer using headerRows and footerRows properties that both define an array of columns each having colspan and rowspan.

export class DataTableGroupDemo implements OnInit {

    sales: any[];

    headerRows: any[];
    
    footerRows: any[];

    ngOnInit() {
        this.sales = [
            {brand: 'Apple', lastYearSale: '51%', thisYearSale: '40%', lastYearProfit: '$54,406.00', thisYearProfit: '$43,342'},
            {brand: 'Samsung', lastYearSale: '83%', thisYearSale: '96%', lastYearProfit: '$423,132', thisYearProfit: '$312,122'},
            {brand: 'Microsoft', lastYearSale: '38%', thisYearSale: '5%', lastYearProfit: '$12,321', thisYearProfit: '$8,500'},
            {brand: 'Philips', lastYearSale: '49%', thisYearSale: '22%', lastYearProfit: '$745,232', thisYearProfit: '$650,323,'},
            {brand: 'Song', lastYearSale: '17%', thisYearSale: '79%', lastYearProfit: '$643,242', thisYearProfit: '500,332'},
            {brand: 'LG', lastYearSale: '52%', thisYearSale: ' 65%', lastYearProfit: '$421,132', thisYearProfit: '$150,005'},
            {brand: 'Sharp', lastYearSale: '82%', thisYearSale: '12%', lastYearProfit: '$131,211', thisYearProfit: '$100,214'},
            {brand: 'Panasonic', lastYearSale: '44%', thisYearSale: '45%', lastYearProfit: '$66,442', thisYearProfit: '$53,322'},
            {brand: 'HTC', lastYearSale: '90%', thisYearSale: '56%', lastYearProfit: '$765,442', thisYearProfit: '$296,232'},
            {brand: 'Toshiba', lastYearSale: '75%', thisYearSale: '54%', lastYearProfit: '$21,212', thisYearProfit: '$12,533'}
        ];
        
        this.headerRows = [
            {
                columns: [
                    {header: 'Brand', rowspan: 3},
                    {header: 'Sale Rate', colspan: 4}
                ]
            },
            {
                columns: [
                    {header: 'Brand', colspan: 2},
                    {header: 'Sale Rate', colspan: 2}
                ]
            },
            {
                columns: [
                    {header: 'Last Year'},
                    {header: 'This Year'},
                    {header: 'Last Year'},
                    {header: 'This Year'}
                ]
            }
        ];
        
        this.footerRows = [
            {
                columns: [
                    {footer: 'Totals:', colspan: 3},
                    {footer: '$506,202'},
                    {footer: '$531,020'}
                ]
            }
        ];
    }
}


<p-dataTable [value]="sales" [headerRows]="headerRows" [footerRows]="footerRows">
    <p-column field="brand"></p-column>
    <p-column field="lastYearSale"></p-column>
    <p-column field="thisYearSale"></p-column>
    <p-column field="lastYearProfit"></p-column>
    <p-column field="thisYearProfit"></p-column>
</p-dataTable>