根据key合并到dataset中

Merging to dataset together according to key

我有两个数据集分别存储在元胞数组和双精度数组中。两个数组的设计是:

Array 1 (name: res) (double) 由两列组成;一个唯一的 ID 列和一个数据列。

数组 2(名称:config)(元胞数组)包含 3 个列单元格,每个单元格中都有一个字符串。数组中的最后一个单元格包含一个与数组 1 中的 id 匹配的 id 双精度整数。必要时,单元格数组中的双精度整数会​​转换为双精度整数。

我想合并这两个数据集,以便将元胞数组中的 3 个元胞和数组 1 中的结果列放在一个公共元胞数组中。我该怎么做?

我有以下代码。该代码没有 return 结果的正确顺序。

function resMat = buildResultMatrix(res, config)

resMat = {};

count = 1;

count_max = size(res,1)/130;

for i = 1 : size(res,1)
   for j = 1 : size(res,1)
       if isequal(res(i),str2double(config{j,3}))
           if i == 1
               resMat(end+1,:) = {config{j,:} res(j,2:end)};
           else
               if count == 1
                   resMat(end+1,:) = {config{j,:} res(j,2:end)};
               elseif count == count_max
                   resMat(end+1,:) = {config{j,:} res(j,2:end)};
               else
                   resMat(end+1,:) = {config{j,:} res(j,2:end)};
               end
               count = count + 1;
            end
        end
    end
    count = 1;
end
end

首先将config中的id转换为数字:

config(:,3) = num2cell(str2double(config(:,3)));

然后运行这个:

res = sortrows(res,1);
config(:,4) = num2cell(res(cell2mat(config(:,3)),2))

这会将来自 res 的数据放入具有相同 ID 的行中 config 的第 4 列。