2017-02-06 75 views
0

行列ごとに2つの値、すなわち労働時間の数値と賃金からなる10個の百分位数を計算できるコードを作成したいとします。パーセンタイルは賃金に基づいていますが、賃金スパン内の個人の平均勤務時間を示します。合計でmatlabでパーセンタイルを使用する方法

私は私の行列では約3000行を持っているが、ここでは(実際のデータは何の見出しを持っていない、私はちょうどそれを読みやすくするためにここに入れて)、データがどのように見えるかです:

Wage/h Work(h) 
12  1572 
15  1671 
32  1782 
78  1254 
22  0 

私はprctileが適切な機能でなければならないことを理解していますが、使用方法はわかりません。すべての助けに感謝します。 :-)

答えて

2

prctileを使用してデータのパーセンタイルを計算します。 bsxfun>=を使用して、各データポイントを各パーセンタイル値と比較することができます。 cumsumを使用して各データポイントのグループインデックスを指定し、次にaccumarrayを使用して各グループの平均を計算することができます。

% Compute the percentiles 
percentiles = prctile(data(:,1), 0:10:90); 

% Determine which percentile each wage is within 
tmp = cumsum(bsxfun(@ge, data(:,1), percentiles), 2); 
group = tmp(:,end); 

% Compute the mean hours for each group 
mean_wages = accumarray(group, data(:,2), [], @mean); 
+0

ありがとうございました。 – KGB91

関連する問題