在matlab中我从csv文件中读取了一个表,然后将我感兴趣的两列移动到一个新表中。这些列是" ID" (一个人,1-400)然后另一个ID代表他们的职业(1-12)。
我想要做的是创建一个包含12条记录和2列的简单表,每条作业都有一条记录,并且必须对具有此作业的用户ID的数量进行汇总/求和,这样的表可以很容易条形图。目前我有400个用户记录,所有记录都带有ID和12个可能的作业ID之一。
非常像SQL聚合/求和函数,但我想在Matlab中使用 table 对象。我遇到的问题是在不使用单元格数组或类似的东西的情况下找到如何做到这一点。
谢谢!
答案 0 :(得分:1)
我知道您自己找到了答案,但我想提一下histc
函数,它可以避免循环(对于更大的矩阵来说速度更快):
JobCounts = histc(OccupationTable(:,2), 1:NumberOfJobs);
将此与作业编号相结合可得到所需的结果:
result = [(1:NumberOfJobs)' JobCounts];
答案 1 :(得分:0)
没关系,解决了。只需循环查看工作号码并运行“总和”,其中ID等于我想要的内容:
for i = 1:1:NumberOfJobs;
JobCounts(i,:) = sum(OccupationTable(:,2) == i);
end