2016-10-29 17 views
-1

私は少し大きなデータセット(48000 * 53)を持っていますが、多変量異常値を見つけようとしています。 しかし、trimmean()、leverage()などの関数を試すたびに、同じエラーが発生します。 私のデータセットはNaN値のきれいになるはずが、私はまだコードD(find(sum(isnan(D),2)==0),:);D(any(isnan(D),2), :)=[];を実行しようとしたが、私は同じエラーを得ている....次の例では、すべての行を削除しMATLAB関数isnanは、 'dataset'タイプの入力引数に対して未定義です

答えて

0

データセットからのNaN要素が含まれています。

例は、以下の投稿に基づいている:Matlab. Replace missed values with an avg

  • 変換データセットセルアレイ。
  • セル配列内のNaN要素のすべてのインデックスを検索します。
  • NaN要素を持つ行のインデックスを検索します。
  • セル配列内のNaN要素のない行のみを保持します。
  • セル配列をデータセットに変換し直します。

    %Create dataset for the example. 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    VarName1 = [4; NaN; 6; 7; 6; 6; 6; 5; 5; 6; 6]; 
    VarName2 = [2; 2; 2; 3; 3; 2; NaN; 2; 2; NaN; 3]; 
    VarName3 = {'aa'; 'aa'; 'aa'; 'bbb'; 'bbb'; 'ccc'; 'ccc'; 'ccc'; 'ccc'; 'dddd'; 'dddd'}; 
    D = dataset(VarName1, VarName2, VarName3); 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    
    %Convert dataset to cell array. 
    C = dataset2cell(D); 
    
    %Find all indexes of NaN elements (use anonymous function). 
    nanIdx = cellfun(@(x)(any(isnan(x))), C); 
    
    %Find indexes of rows with NaN elements 
    nanRows = any(nanIdx,2); 
    
    %Keep only rows without NaN elements. 
    C = C(~nanRows, :); 
    
    D = cell2dataset(C); 
    

は、次のコードサンプルを確認してください

関連する問題