2016-07-04 14 views
1

私はあなたが私を助けてくれることを願っています。私は、次の構造を有するMATLABでの大きなデータセット(200000×5セル)インポートしたMatlabで大規模なデータセットを整理する

:列2~4は、文字列を含むながら

'Year' 'Country' 'X' 'Y' 'Value'

列1および5は、数値を含みます。

私は、次のような構造だろう変数にこのすべての情報を整理したいと思います:私は考えることができるすべての名前の間の一致を見つけるために、データセット全体をループしている

NewVariable{Country_1 : Country_n , Year_1 : Year_n}(Y_1 : Y_n , X_1 : X_n)

Country,Year,XおよびYは、ifstrcmpの機能を組み合わせた変数ですが、これは私がしようとしていることを達成する最も効果的な方法ではないようです。

誰でもお手伝いできますか?

ありがとうございます。コメントで述べたように

+1

最初に機能するものを書き、後で最適化を心配してください。 – excaza

+0

ヒントexcazaをありがとう。ポイントは、私がそれを行うために使用できることがわからない機能がおそらく存在するということです。それ以外の場合は、具体的な値を抽出するたびにデータセット全体をループする必要があります。たとえば、200000レコードの代わりに、500万ドルがある場合は、実際の代替方法ではありません。 – aulky11

+1

あああります! () – Finn

答えて

1

あなたはカテゴリカル配列を使用することができます。

% some arbitrary data: 
country = repmat('ca',10,1); 
country = [country; repmat('cb',10,1)]; 
country = [country; repmat('cc',10,1)]; 
T = table(repmat((2001:2005)',6,1),cellstr(country),... 
    cellstr(repmat(['x1'; 'x2'; 'x3'],10,1)),... 
    cellstr(repmat(['y1'; 'y2'; 'y3'],10,1)),... 
    randperm(30)','VariableNames',{'Year','Country','X','Y','Value'}); 
% convert all non-number data to categorical arrays: 
T.Country = categorical(T.Country); 
T.X = categorical(T.X); 
T.Y = categorical(T.Y); 
% here is an example for using categorical array: 
newVar = T(T.Country=='cb' & T.Year==2004,:); 

tableクラスは、そのようなもののために作られた、と非常に便利です。最後の行T.Country=='cb' & T.Year==2004のロジック文を必要に応じて展開してください。 これが役立つかどうか教えてください)

+0

便利な応答のおかげで@ EBH!データを表としてインポートし、カテゴリ関数を使用することは、まさに私が必要としていたものです。 :-) – aulky11

関連する問題