2016-03-23 22 views
0

NaN的行我有一個Table其爲100×19添加在MATLAB表

表的第一16個列中包含字符,最後3列包含雙變量。

如何在第50行之後插入3個由NaN組成的新行,以便我的表變爲103 x 19?

表的格式爲

Subject Sex Age .... .... ... .. Var1 Var2 Var3 
1  M 38      88 89 99 
2  F 34 ..... .... .. ... 34 34 34 

,我想是這樣(在這個例子中,我第一次和第二次之間只加1行)

Subject Sex Age .... .... ... .. Var1 Var2 Var3 
1  M 38      88 89 99 
1  M 38 ..... .... .. . . NaN NaN NaN 
2  F 34 ..... .... .. ... 34 34 34 

回答

4

您可以創建NaN值使用nan()函數,然後將它們作爲新數據附加到您的表中。您需要將新數據變成具有相同變量名稱的表格。我在這裏假設他們都是數字。

在你的情況

T=[T; array2table(nan(3,8),'variablenames',T.Properties.VariableNames)]; 

此外,按照@丹的意見,似乎也可以做

T{51:53,:} = NaN 

同樣,如果所有的值是數值型。

+0

或'T(51:53,:) = NaN' – Dan

+0

@ThomasW。如果你插入中間,那麼'T = [T(1:50,:);南(3,19); T(51:end,:)]' – Dan

+0

@Dan的確,我在同一時間刪除了我的評論:) –

2

假設所有的數據是數字,然後

% Create an example table 
>> tbl = table((1:100)',(101:200)'); 
% Append rows 
>> tbl{end+1:end+3,:} = nan; 
% Move rows 
>> tbl{53:end,:} = tbl{50:100,:}; 
% Insert nans 
>> tbl{50:52,:} = nan; 

如果所有的數據不是數字,那麼它是一個有點困難,但一般的概念仍然成立。

+0

嗨,謝謝你的回覆。數據是混合的。即前16列是char其餘的兩倍 – gabboshow

+1

@ gabboshow,你想如何將NaN存儲在非數值變量中?它在技術上已經是NaN(不是數字)! –

+0

好吧,說我想複製最後非數字變量的內容並用NaN替換數字。 – gabboshow