我需要根据不同的年龄组对数据集进行分类。分类取决于性别是男性还是女性。我首先按性别对数据进行子集化,然后使用序数函数(数据集来自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行) 序数级别及其顺序必须相同。
答案 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”的文件。