2016-01-22 555 views
1

我有一个表,这是类似这样的:如何从Matlab中的表中删除特定列中包含NaN的行?

Rows = {'Row1';'Row2';'Row3'}; 
Column1 = [NaN;1;2]; 
Column2 = [4;5;NaN]; 
Column3 = [NaN;NaN;4]; 
Table1 = table(Column1,Column2,Column3,... 
'RowNames',Rows) 

Table1 = 

     Column1 Column2 Column3 
     _______ _______ _______ 

Row1 NaN   4  NaN  
Row2  1   5  NaN  
Row3  2  NaN   4  

我需要删除具有楠列1行。其他所有行中可能有或没有NaN的行应保留。所以期望的输出应该是这样的:

Table2 = 

     Column1 Column2 Column3 
     _______ _______ _______ 

Row2  1   5  NaN  
Row3  2  NaN   4  

当然,这只是一个简单的例子。真正的表是巨大的,我将一次处理一列,这就是为什么我需要有选择地删除特定列中包含NaN的行。

有没有办法做到这一点,而无需将表转换为结构数组或其他东西?

+1

'Table1(isnan(Table1 {:,1}),:)= []'? – Geoff

+0

@Geoff这是我试图做的,并没有产生与此功能的另一个表。我的Table1包含我打算反复使用的原始数据,所以我需要将输出保存为Table2。我觉得它应该很简单,但我无法弄清楚... –

回答

4

我尝试这样做:

Table2 = Table1(~isnan(Table1.Column1), :) 

我使用的是:第一列称为列1。

注意Table1.Column1返回:

ans = 

    NaN 
    1 
    2 

等选择该列中的非NaN值是通过使用〜isnan实现()。

其余的是纯粹索引到表中。我用上面的命令获得以下内容:

Table2 = 

     Column1 Column2 Column3 
     _______ _______ _______ 

Row2 1   5  NaN  
Row3 2   NaN   4 
相关问题