2016-01-12 4 views
7

Как перевернуть таблицу таким образом, что VariableNames становится RowNamesКак перенести таблицу MATLAB?

т.е.

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 

становится

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

ответ

9

вам нужно сначала преобразовать таблицу в массив перед поворотом и преобразования его обратно в таблица:

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

Вы также можете попробовать rot90(YourTable) и посмотреть, что происходит, но я не уверен, что он делает то же самое (я думаю, что это один из тех обманчивых имен)

+0

Это может быть сокращено до 'Новая_таблицы = таблицы (YourTable {:,:}. ', ... ' RowNames ', YourTable.Properties.VariableNames) '. 'rot90' не принимает таблицы. – EBH

+1

Если ваша таблица имела Имена для строки, добавьте эту строку: 'YourNewTable.Properties.VariableNames = YourTable.Properties.RowNames;' – traindriver

+0

Я сделал то же самое. Мои переменные имеют разные типы данных (uint8, float32 и т. Д.). Когда я создаю новую таблицу, все переменные передаются в uint16. Как я могу избежать этого? – 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

Как это отличается от принятого ответа? – excaza

Смежные вопросы