多列字段排序
Excel中如何对多列数据进行排名?
Excel中如何对多列数据进行排名?
其实这个问题非常简单,用sumproduct 函数就能解决。
需求1:统计总排名
这个需求比较简单,
公式:SUMPRODUCT((B2lt$B$2:$B$95)*1) 1
翻译:
- B2lt$B$2:$B$95:将 B2 与 B 列所有值比较,返回的值是 true or fales,分别为 1 或 0
*1:统计结果为 ture 的数量。这里 * 表示 and
1:如果有 3 个比自己大的,那么排名为 3 14
需求2:统计分类排名
例如:德云社一共 8 个小队,除了下表的前 5 位之外,都分别属于不同的队。现在需要统计他们的年终奖在自己小队的排名?
解决方案:
公式:SUMPRODUCT((A2$A$2:$A$95)*(C2lt$C$2:$C$95)*1) 1
翻译:在上一个需求的基础上,增加了(A2$A$2:$A$95) 条件,即在“如果在同一个小队,则计算排名”
C 如何对矩阵进行排序?
sort函数是Matlab内置的排序函数,可以满足常用的排序需求。sort函数的基本形式如下:
[Y,I] sort(X,DIM,MODE)
其中:
Y表示对X排序后的结果
I 表示Y中对应元素原来在X中的下标
mode的默认值是‘ascend升序排列,‘descend为降序排列
DIM的默认值是1,如果X是矩阵,则默认对矩阵的各个列进行升序排列,即sort(X,1)与sort(X)等效(矩阵在matlab中是按列存储的)
sort(X,2)表示对矩阵的各行中的元素按照升序排列
如果X是行向量,则Y与I也是行向量;如果X是列向量,则Y与I也是列向量,如果X是矩阵,则Y与I是与X维数相同的矩阵。
由于在排序的时候保留了数据在原数组的下标信息,所以排序是可逆的。如果[Y,I] sort(X,DIM,MODE)X是排序前的向量,Y是排序后的向量,I是下标的索引,则XY(I),可以还原原来的向量。
MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrixlaboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C ,JAVA的支持。