Hi everyone,
I am trying to add weights to a set of observations based on their year. So, I have 150 observations across 30 unique years. I have one weight per year. I would like to broadcast the weights to the 150 observations linking based on year. I understand that this can be done using database join functionality but I am wondering if there is a way to do this just using matrices.
To restate: My weights matrix is 30x2 (unique years x [years weights]). My data matrix is 150x2 (num observations x [year blank-waiting-for-weight].
Computational efficiency is critical here so that's why I'm trying to avoid conversions if possible.
Thanks for your thoughts, Mike

 採用された回答

dpb
dpb 2015 年 12 月 7 日

1 投票

[~,lib]=ismember(dat(:,1),w(:,1)); % location of year in data
dat=[dat w(lib,2)]; % concatenate the weights in those rows

1 件のコメント

Mike Alonzo
Mike Alonzo 2015 年 12 月 7 日
Perfect. Thanks. Forgot about the second output of ismember.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

質問済み:

2015 年 12 月 7 日

コメント済み:

2015 年 12 月 7 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by