How can I match values using a 'translation array' without looping

1 回表示 (過去 30 日間)
Clemens Gersch
Clemens Gersch 2019 年 12 月 3 日
コメント済み: Clemens Gersch 2019 年 12 月 3 日
Assume, you have a table with n observations for which something is measured, e.g. only the week in which they were observed. Then, there is some matrix, that I would describe as a translation or mapping array. In the first column it has week values and in the second it has average temperatures or something. The following code should illustrate that:
dataset = table([1:100]', randi([1,52],100,1), 'VariableNames', ["ID", "week"])
translation = [[1:52]', randi([-10,40],52,1)]
How can I make a third column in dataset that gives me correctly assigned temperature of the week of the observation without using any kind of loop?
It should be some very efficient function or way of indexing as I am having a very large dataset. Right now, I am using some containers.Map object in a for loop which is endlessly slow.

採用された回答

JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH 2019 年 12 月 3 日
solution:
dataset = table([1:100]', randi([1,52],100,1), 'VariableNames', ["ID", "week"]);
dataset=[dataset table(nan(size(dataset,1),1),'VariableNames',"mean")];
translation = [[1:52]', randi([-10,40],52,1)];
[d,x]=ismember(dataset{:,1}',translation(:,1)');
idx=x(x>0);
dataset{d,3}=translation(idx,2)
  3 件のコメント
JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH 2019 年 12 月 3 日
great!
Clemens Gersch
Clemens Gersch 2019 年 12 月 3 日
and thanks btw.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by