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

 Respuesta aceptada

dpb
dpb el 7 de Dic. de 2015
[~,lib]=ismember(dat(:,1),w(:,1)); % location of year in data
dat=[dat w(lib,2)]; % concatenate the weights in those rows

1 comentario

Mike Alonzo
Mike Alonzo el 7 de Dic. de 2015
Perfect. Thanks. Forgot about the second output of ismember.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Preguntada:

el 7 de Dic. de 2015

Comentada:

el 7 de Dic. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by