【问题标题】:Aggregate/sum function of a table in MatlabMatlab中表格的聚合/求和函数
【发布时间】:2014-10-16 12:12:49
【问题描述】:

在 matlab 中,我从 csv 文件中读取了一个表,然后将我感兴趣的两列移到了一个新表中。这些列是“ID”(一个人的,1-400),然后是另一个表示他们职业的 ID(1-12)。

我要做的是创建一个包含 12 条记录和 2 列的简单表,每个作业都有一条记录,并且必须汇总/求和具有此作业的用户 ID 的数量,这样的表可以很容易条形图。目前我有 400 条用户记录,所有记录都有他们的 ID 和 12 个可能的工作 ID 之一。

很像一个 SQL 聚合/求和函数,但我想在 Matlab 中使用 table 对象来完成。我遇到的问题是找到如何在不使用单元阵列或类似的东西的情况下做到这一点。

谢谢!

【问题讨论】:

  • 请贴出可以直接复制粘贴到matlab中的示例数据,生成一个小而有代表性的示例表

标签: matlab sum aggregate


【解决方案1】:

我知道您自己找到了答案,但我想提一下 histc 函数,它可以避免循环(并且对于较大的矩阵更快):

JobCounts = histc(OccupationTable(:,2), 1:NumberOfJobs);

将其与作业编号结合可得到所需的结果:

result = [(1:NumberOfJobs)' JobCounts]; 

【讨论】:

  • 谢谢,这可能很有用,因为我的问题集包含超过 9000 个条目,我需要对其进行多次排序
【解决方案2】:

没关系,解决了。只需遍历工作编号并运行“sum”,其中 ID 等于我想要的:

for i = 1:1:NumberOfJobs;
    JobCounts(i,:) = sum(OccupationTable(:,2) == i);

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多