2016-10-02 8 views
-1

私はサブクラスを選択したい元のdata行列の特定の列の条件に基づいて選択します。具体的には、元の行列は、私はmatlabの特定の列の条件に基づいて部分行列を抽出します

x7992 = data(data(:,col_coh)==0 & data(:,col_year)<=1992); 

col_coh,col_yearとMATLABでこれを書き換え、元のガウスコード

x7992 =selif(data,data[.,col_coh].==0 .and data[.,col_year].<=1992); 

に従う、23166バイ9事前定義された列数です。

しかし、上記のコード行では、私には1行(23166-by-1)しか与えられません。これは私が望むものではありません(この条件の実際の結果ベースではありません)それを修正する方法は?ありがとうございました。

---更新-----

data

行列は次のようである(最初の3つのCOLSは、選択に関連しているので、私は他の列を省略)、最初の列は、個人

1 1979 0 
1 1980 0 
1 1981 1 
1 1982 0 
1 1983 1 
2 1990 0 
2 1991 0 
2 1992 0 
2 1993 1 
3 1985 0 
3 1986 0 
3 1987 0 
するためのIDであります

条件に基づいて、値が2番目の列の値が1992より大きく、3番目の列の値が1である行を除外するデータの部分行列です。

+0

'data'マトリックスと予想される出力 –

+0

こんにちは、Sardar_Usama @、私は私のデータのいくつかの詳細を追加する例を与えます – zlqs1985

答えて

0

与えられた例に基づいて、以下を実行します:

この出力を与える
data(data(:,2)<=1992 & data(:,3)~=1,:) 

 1 1979 0 
     1 1980 0 
     1 1982 0 
     2 1990 0 
     2 1991 0 
     2 1992 0 
     3 1985 0 
     3 1986 0 
     3 1987 0 
0

あなたの状態ベクトルは、単一の23166x1ベクトルとして返されるので、あなたが唯一の出力として単一の列ベクトルを取得します。

値の行全体を取得するには、colonを2番目の引数として追加する必要があります。 例を2行に分割して読みやすくしました。

condIdx = data(:,col_coh)==0 & data(:,col_year)<=1992; 
x7992 = data(condIdx, :); 

結果行列に特定の列を追加する場合は、コロン演算子ではなくベクトルに列番号を入力します。

colsInResult = [1 2 3]; 
x7992 = data(condIdx, colsInResult); 
関連する問題