R 有一个名为 rank()
的函数。
https://www.rdocumentation.org/packages/base/versions/3.4.1/topics/rank
该函数的作用是计算并返回升序列表中每个元素的顺序。
(这不是函数order()
,它返回每个元素在升序列表中应具有的索引)。
MATLAB 中是否存在此类函数?我怀疑在 MATLAB 中编写自己的此类函数会非常低效。
R 有一个名为 rank()
的函数。
https://www.rdocumentation.org/packages/base/versions/3.4.1/topics/rank
该函数的作用是计算并返回升序列表中每个元素的顺序。
(这不是函数order()
,它返回每个元素在升序列表中应具有的索引)。
MATLAB 中是否存在此类函数?我怀疑在 MATLAB 中编写自己的此类函数会非常低效。
是的,你可以使用 unique()
:
[~, ~, rank] = unique(A); % A is the array you want to rank
请注意,MATLAB的unique()
函数在解决相等情况时与R的rank()
函数不同。
或者,如果您想像rank()
一样解决相等情况,那么可以使用tiedrank()
函数,前提是您已经安装了统计工具箱:
rank = tiedrank(A);
tiedrank()
的默认设置在解决并列时是否完全相同? - ShanZhengYangrank()
和tiedrank()
默认都将并列的排名视为平均值。因此,对于数组[10 20 30 40 20]
的排名将使用任一函数计算出来为[1.0 2.5 4.0 5.0 2.5]
。 - frslm