创建具有多个组的序数数组

时间:2014-01-06 12:39:53

标签: matlab

我需要根据不同的年龄组对数据集进行分类。分类取决于性别是男性还是女性。我首先按性别对数据进行子集化,然后使用序数函数(数据集来自Matlab示例)。当我尝试垂直连接子集时,下面的代码在最后一行崩溃:

load hospital;
subset_m=hospital(hospital.Sex=='Male',:);
subset_f=hospital(hospital.Sex=='Female',:);

edges_f=[0 20 max(subset_f.Age)];
edges_m=[0 30 max(subset_m.Age)];

labels_m = {'0-19','20+'};
labels_f = {'0-29','30+'};

subset_m.AgeGroup= ordinal(subset_m.Age,labels_m,[],edges_m);
subset_f.AgeGroup = ordinal(subset_f.Age,labels_f,[],edges_f);

vertcat(subset_m,subset_f);

使用dataset / vertcat时出错(第76行) 无法使用VERTCAT连接数据集变量'AgeGroup'。

引起:     使用序数/ vertcat时出错(第36行)     序数级别及其顺序必须相同。

1 个答案:

答案 0 :(得分:0)

修改

似乎问题中缺少一个重要部分,这是纠正问题的答案。您需要使用join而不是vertcat,例如:

joinFull = join(subset_f,subset_m,'LeftKeys','LastName','RightKeys','LastName','type','rightouter','mergekeys',true)

解决原始问题

看起来你实际上正在尝试使用错误的变量。如果我将hospitalCopy的所有实例都更改为hospital,那么一切都适合我。

也许您复制了医院并对其进行了编辑,从而失去了输入的有效性。 如果您确实需要hospitalCopy,请确保在load hospital之后直接分配给它。

如果这没有帮助,请在运行代码之前尝试使用clear all,并确保当前目录中没有名为“hospital”的文件。