[R] Puzzled by results from base::rank()

Gerrit Eichner gerr|t@e|chner @end|ng |rom m@th@un|-g|e@@en@de
Fri Aug 11 10:31:46 CEST 2023


Dear Chris,

the members of the triplet would be ranked 4, 5 and 6 (in your example), 
so the *mean of their ranks* is correctly 5.

For any set of k tied values the ranks of its elements are averaged (and 
assigned to each of its k members).

  Hth  --  Gerrit

---------------------------------------------------------------------
Dr. Gerrit Eichner                   Mathematical Institute, Room 215
gerrit.eichner using math.uni-giessen.de   Justus-Liebig-University Giessen
Tel: +49-(0)641-99-32104          Arndtstr. 2, 35392 Giessen, Germany
http://www.uni-giessen.de/eichner
---------------------------------------------------------------------

Am 11.08.2023 um 09:54 schrieb Chris Evans via R-help:
> I understand that the default ties.method is "average".  Here is what I 
> get, expanding a bit on the help page example. Running R 4.3.1 on Ubuntu 
> 22.04.2.
> 
>  > x2 <- c(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)
>  > rank(x2)
>   [1]  4.5  1.5  6.0  1.5  8.0 11.0  3.0 10.0  8.0  4.5  8.0
> 
> OK so the ties, each of with two members, are ranked to their mean.
> 
> So now I turn one tie from a twin to a triplet:
> 
>  > x3 <- c(x2, 3)
>  > rank(x3)
>   [1]  5.0  1.5  7.0  1.5  9.0 12.0  3.0 11.0  9.0  5.0  9.0  5.0
>  > sprintf("%4.3f", rank(x3))
>   [1] "5.000"  "1.500"  "7.000"  "1.500"  "9.000"  "12.000" "3.000" 
> "11.000"
>   [9] "9.000"  "5.000"  "9.000"  "5.000"
> 
> The doublet is still given the mean of the values but the triplet is 
> rounded up.  What am I missing here?!
> 
> TIA,
> 
> Chris
>



More information about the R-help mailing list