【问题标题】:Join 2 structures with the same fieldnames by an 'ID' field in Matlab通过 Matlab 中的“ID”字段连接具有相同字段名的 2 个结构
【发布时间】:2014-07-27 16:16:34
【问题描述】:

通过 Matlab 中的“ID”字段连接具有相同字段名称的 2 个结构

我有 2 个结构:

s2010.name = 'fred';
s2010.wage = 8;
s2010(2).name = 'alice';
s2010(2).wage = 9;
s2010(3).name = 'frank';
s2010(3).wage = 10;


s2011.name = 'alice';
s2011.wage = 10;
s2011(2).name = 'frank';
s2011(2).wage = 11;
s2011(3).name = 'peter';
s2011(3).wage = 12;

我想通过它们的通用名称加入这两个结构以获得以下信息:

s2years.name = 'alice';
s2years.wage2010 = 9;
s2years.wage2011 = 10;
s2years(2).name = 'frank';
s2years(2).wage2010 = 10;
s2years(2).wage2011 = 11;

请注意,fred 和 peter 没有出现在我只想获取常用名称的结构中。我想将这两年的工资保存在结果结构中的不同字段中。

有没有办法做到这一点?首先将这 2 个集合转换为另一个对象(例如数据集/表)更好吗?

【问题讨论】:

    标签: matlab join struct merge


    【解决方案1】:

    看来这个问题很吸引人。这是我的版本 -

    [name,ind2010,ind2011] = intersect({s2010.name},{s2011.name});
    s2years = struct('name', name, ...
        'wage2010', {s2010(ind2010).wage}, ...
        'wage2011', {s2011(ind2011).wage});
    

    【讨论】:

    • 有趣,不知道intersect。
    • 我也很感兴趣,它可以将多行代码合二为一。查看最新编辑。
    • 在看到之前的编辑后,我删除了我的答案,因为它无关紧要。
    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多