2016-01-12 12 views
7

Jak mogę odwrócić tabelę tak, że VariableNames staje RowNamesJak przetransponować tabelę MATLAB?

tj

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 

staje

 Chisq 
     _______ 
m0  0.096898 
m1  0.11567 
m2  ... 
...  ... 

Odpowiedz

9

trzeba najpierw przekonwertować tabelę do tablicy przed obróceniem i przekształcenie go z powrotem do tabela:

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

Możesz także spróbować rot90(YourTable) i zobaczyć co się dzieje, ale nie jestem pewien, że robi to samo (myślę, że to jedna z tych nazw mylące)

+0

To może być skrócone do 'NewTable = tabeli (YourTable {:,:}. ', ... ' RowNames ', YourTable.Properties.VariableNames) '. 'rot90' nie przyjmuje tabel. – EBH

+1

Jeśli tabela zawierała nazwy dla wiersza, dodaj ten wiersz: 'YourNewTable.Properties.VariableNames = YourTable.Properties.RowNames;' – traindriver

+0

Zrobiłem to samo. Moje zmienne mają różne typy danych (uint8, float32 itd.). Podczas tworzenia nowej tabeli wszystkie zmienne są przesyłane do uint16. Jak mogę tego uniknąć? – JohnDoe

0
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

Czym różni się to od zaakceptowanej odpowiedzi? – excaza