1

我有一个包含大量数据的文件。没有关于价格信息的地方被标记为NaN。我想删除所有有这样的名称的行,并删除所有缺少大量数据的列(因为我需要比例矩阵)。

我还有另一个字符串 ( AssetList),其中包含有关所有代码的信息。如果要删除列,则需要根据那里的代码删除。

我将不胜感激任何帮助。

数据:

6,41    16,51   x      x   69,78

6,22    16      x      x   68,48

6,17    15,61   x      x   69,46

x       x       x      x   x

x       x       x      x   x

x       x       x      x   x

5,83    15,14   x      x   69,85

6,4     17,64   x      x   71,03

6,07    16,04   x      x   68,64

5,91    17,09   x      x   68,92

6       18,19   x      x   68,72

x       x       x      x   x

x       x       x      x   x

5,58    17,17   x      x   69,02

5,3     16,83   x      x   67,69

5,66    19,65   x      x   68,64

5,65    20,86   x      x   69,45

5,43    20,46   x      x   68,94

x       x       x      x   x

x       x       x      x   x

5,58    2       0,16  x    68,73

资产清单:

FLWS   SRCE   FUBC   DDD   MMM 
4

1 回答 1

0

我必须在这里做一些假设,因为我没有完全理解你的问题。

下面首先删除所有存在的行NaN 然后继续删除所有包含至少一个 NaN的列:

M = [ ...
    6.41    16.51   NaN    NaN 69.78                           
    6.22    16      NaN    NaN 68.48                           
    6.17    15.61   NaN    NaN 69.46                           
    NaN     NaN     NaN    NaN NaN                           
    NaN     NaN     NaN    NaN NaN                           
    NaN     NaN     NaN    NaN NaN                           
    5.83    15.14   NaN    NaN 69.85                           
    6.4     17.64   NaN    NaN 71.03                           
    6.07    16.04   NaN    NaN 68.64                           
    5.91    17.09   NaN    NaN 68.92                           
    6       18.19   NaN    NaN 68.72                           
    NaN     NaN     NaN    NaN NaN                               
    NaN     NaN     NaN    NaN NaN                           
    5.58    17.17   NaN    NaN 69.02                           
    5.3     16.83   NaN    NaN 67.69                           
    5.66    19.65   NaN    NaN 68.64                           
    5.65    20.86   NaN    NaN 69.45                           
    5.43    20.46   NaN    NaN 68.94                           
    NaN     NaN     NaN    NaN NaN                           
    NaN     NaN     NaN    NaN NaN            
    5.58    2       0.16   NaN 68.73];

AssetList = {
    'FLWS'   'SRCE'   'FUBC'  'DDD'   'MMM' };

% Delete all-NaN rows
M(all(isnan(M),2),:) = [];

% Delete any-NaN columns
colsToBeDeleted = any(isnan(M));
M(:, colsToBeDeleted) = []
AssetList(colsToBeDeleted) = []

结果:

M =
    6.4100   16.5100   69.7800
    6.2200   16.0000   68.4800
    6.1700   15.6100   69.4600
    5.8300   15.1400   69.8500
    6.4000   17.6400   71.0300
    6.0700   16.0400   68.6400
    5.9100   17.0900   68.9200
    6.0000   18.1900   68.7200
    5.5800   17.1700   69.0200
    5.3000   16.8300   67.6900
    5.6600   19.6500   68.6400
    5.6500   20.8600   69.4500
    5.4300   20.4600   68.9400
    5.5800    2.0000   68.7300

AssetList = 
   'FLWS'    'SRCE'    'MMM'
于 2013-06-04T09:22:28.313 回答