How do I unstack a data in matlab? The unstack
for tables only allows me to do it for one column, and does not seem to be able to do a Multi Index solution as available in Python.
I was hoping to convert this:
into this:
in Matlab.
Here is code to produce the initial table T
:
Col1 = [1,2,4,1,3,1,2,3,4].';
Col2 = {'A','A','A','B','B','C','C','C','C'}.';
Col3 = [0.48,0.78,0.58,0.01,0.53,0.26,0.93,0.69,0.45].';
Col4 = [0.95,0.29,0.90,0.72,0.07,0.23,0.81,0.22,0.88].';
T = table( Col1, Col2, Col3, Col4 );
You can do this with the unstack
function by specifying more than one variable for the 2nd input
Col1 = [1,2,4,1,3,1,2,3,4].';
Col2 = {'A','A','A','B','B','C','C','C','C'}.';
Col3 = [0.48,0.78,0.58,0.01,0.53,0.26,0.93,0.69,0.45].';
Col4 = [0.95,0.29,0.90,0.72,0.07,0.23,0.81,0.22,0.88].';
T = table( Col1, Col2, Col3, Col4 );
tUnstack = unstack( T, {'Col3','Col4'}, 'Col2' );
Output:
Note that, in MATLAB, you cannot have multiple header rows in a table. The unstack
function concatenates header names (as shown above) for multiple categories, or can take an additional 'NewDataVariableNames'
argument if you wish to specify them.
If you needed multiple header rows, you would have to parse out the headers and store the new data in a cell array.