matlab有类似groupby
时间: 2023-05-03 20:07:01 浏览: 210
实例详解Group by和Having子句
在MATLAB中,可以使用“splitapply”函数进行类似于SQL中的“GROUP BY”操作。
“splitapply”可以将一个数据集(通常是一个矩阵或一个表格)根据一列或多列进行分组,并对每个分组执行一个指定的函数。例如,下面的代码将一个表格按照“性别”列进行分组,并计算每个分组的平均身高和体重:
```matlab
% 创建一个表格,包含姓名、性别、身高和体重信息
names = {'Alice', 'Bob', 'Charlie', 'Dave', 'Eve'}';
genders = {'F', 'M', 'M', 'F', 'F'}';
heights = randi([150 200], 5, 1);
weights = randi([50 100], 5, 1);
data = table(names, genders, heights, weights);
% 按照“性别”列进行分组,并计算平均值
grpstats(data, 'genders', {'mean', 'numel'})
```
运行上述代码,将得到如下结果:
```
ans =
2×3 table
genders GroupCount mean_height mean_weight
_______ __________ ___________ ___________
F 3 167.67 66.333
M 2 160.50 68.500
```
在这个表格中,每个分组的平均身高和体重被计算出来了,并以“genders”列的不同取值作为分组标准。可以看出,分组后的结果与“GROUP BY”操作类似。
除了“grpstats”函数,还有一些其他函数也支持类似的分组操作,例如“splitapply”、“accumarray”等等。可以根据需要选择合适的函数来完成分组任务。
阅读全文