How to migrate MATLAB table?

How can I flip a table so that VariableNames becomes RowNames

i.e.

  m0 m1 m10 m11 m12 m13 m14 m2 m3 m4 m5 m6 m7 m8 m9 ________ _______ _______ _______ _______ _______ _______ _______ _______ _______ ________ ________ _______ _______ _______ 0.096898 0.11567 0.23266 0.11393 0.51438 0.51438 0.51438 0.42039 0.11543 0.11024 0.060229 0.086558 0.11542 0.11537 0.43305 

becomes

  Chisq _______ m0 0.096898 m1 0.11567 m2 ... ... ... 
+7
matlab
source share
2 answers

you need to first convert the table to an array before you rotate and convert it back to table:

 YourArray = table2array(YourTable); YourNewTable = array2table(YourArray.'); YourNewTable.Properties.RowNames = YourTable.Properties.VariableNames; 

You can also try rot90(YourTable) and see what happens, but I'm not sure if it does the same (I think this is one of these misleading names)

+9
source share
 function [tableTransposed] = transposeTable(tableIn) %this function transposes a table. props =tableIn.Properties.VariableNames; tableTransposed = table(); tableSz = size(tableIn); tableTransposed.metricName = props'; tableTransposed(1,:) = []; for newPropertyNum = 1:tableSz(1) propCurr = table2array(tableIn(newPropertyNum,1)); if isa(propCurr,'numeric') newProperty = num2str( propCurr ); else %assumed to be string newProperty = propCurr; end tableTransposed = setfield(tableTransposed,newProperty,table2array(tableIn(newPropertyNum,2:end))'); end 
0
source share

All Articles