【发布时间】:2013-09-07 10:43:47
【问题描述】:
我有一个包含 a、b、c 和 d 列的数据集 我想按 a,b 对数据集进行分组并找到 c 使得每个组的 d 最小 我可以使用“grpstats”作为“分组依据”:
grpstats(M,[M(:,1) M(:,2) ],{'min'});
我不知道如何找到导致 d 中最小值的 M(:,3) 的值
在 SQL 中,我想我们为此使用嵌套查询并使用主键。如何在 Matlab 中求解?
这是一个例子:
>> M =[4,1,7,0.3;
2,1,8,0.4;
2,1,9,0.2;
4,2,1,0.2;
2,2,2,0.6;
4,2,3,0.1;
4,3,5,0.8;
5,3,6,0.2;
4,3,4,0.5;]
>> grpstats(M,[M(:,1) M(:,2)],'min')
ans =
2.0000 1.0000 8.0000 0.2000
2.0000 2.0000 2.0000 0.6000
4.0000 1.0000 7.0000 0.3000
4.0000 2.0000 1.0000 0.1000
4.0000 3.0000 4.0000 0.5000
5.0000 3.0000 6.0000 0.2000
但是 M(1,3) 和 M(4,3) 是错误的。我正在寻找的正确答案是:
2.0000 1.0000 9.0000 0.2000
2.0000 2.0000 2.0000 0.6000
4.0000 1.0000 7.0000 0.3000
4.0000 2.0000 3.0000 0.1000
4.0000 3.0000 4.0000 0.5000
5.0000 3.0000 6.0000 0.2000
总之,我不想要第三列的最小值;但我希望它的值对应于第 4 列中的最小值
【问题讨论】:
-
你能展示(简短的)样本数据,你得到的输出吗?不确定我是否理解你的问题。 “导致 d 中的最小值的 M(:,3) 的值”是什么意思?
-
当然。我编辑了问题内容。