perform join without using dataset or table

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

 Accepted Answer

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

1 Comment

Perfect. Thanks. Forgot about the second output of ismember.

Sign in to comment.

More Answers (0)

Asked:

on 7 Dec 2015

Commented:

on 7 Dec 2015

Community Treasure Hunt

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

Start Hunting!