Does anyone know why the two rank functions gives different results? I need to use the rank function in a "for" loop, so the sequence to be ranked is given values in the form of part (1). How can I use assignment like in part (1) to get correct ranks as in part (2)? Thank You Part (1) i<-1.94 b<-0.95-i c<-1.73-i d<-2.62-i y<-c(0.68,0.95,b,c,d) y 0.68 0.95 -0.99 -0.21 0.68 rank(y) 3 5 1 2 4 Part(2) rank(c(0.68,0.95,-0.99,-0.21,0.68)) 3.5 5.0 1.0 2.0 3.5
> y<-round(c(0.68,0.95,b,c,d),2) > rank(y)[1] 3.5 5.0 1.0 2.0 3.5 On 10/10/06, Li Zhang <zhanglitt@yahoo.com> wrote:> > Does anyone know why the two rank functions gives > different results? I need to use the rank function in > a "for" loop, so the sequence to be ranked is given > values in the form of part (1). How can I use > assignment like in part (1) to get correct ranks as in > part (2)? > > Thank You > > > > Part (1) > i<-1.94 > b<-0.95-i > c<-1.73-i > d<-2.62-i > > y<-c(0.68,0.95,b,c,d) > > y > 0.68 0.95 -0.99 -0.21 0.68 > > rank(y) > 3 5 1 2 4 > > Part(2) > rank(c(0.68,0.95,-0.99,-0.21,0.68)) > 3.5 5.0 1.0 2.0 3.5 > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- ================================David Barron Said Business School University of Oxford Park End Street Oxford OX1 1HP [[alternative HTML version deleted]]
Because y[1] and y[5] are not the same in Part1 but are in Part2:> # using y from Part1 > y[5] - y[1][1] 1.110223e-16 You could round your numbers to 2 digits, say:> rank(round(100*y)) # y is from Part1[1] 3.5 5.0 1.0 2.0 3.5 On 10/10/06, Li Zhang <zhanglitt at yahoo.com> wrote:> Does anyone know why the two rank functions gives > different results? I need to use the rank function in > a "for" loop, so the sequence to be ranked is given > values in the form of part (1). How can I use > assignment like in part (1) to get correct ranks as in > part (2)? > > Thank You > > > > Part (1) > i<-1.94 > b<-0.95-i > c<-1.73-i > d<-2.62-i > > y<-c(0.68,0.95,b,c,d) > > y > 0.68 0.95 -0.99 -0.21 0.68 > > rank(y) > 3 5 1 2 4 > > Part(2) > rank(c(0.68,0.95,-0.99,-0.21,0.68)) > 3.5 5.0 1.0 2.0 3.5 > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Li Zhang wrote:> Does anyone know why the two rank functions gives > different results? I need to use the rank function in > a "for" loop, so the sequence to be ranked is given > values in the form of part (1). How can I use > assignment like in part (1) to get correct ranks as in > part (2)? > > Thank You > > > > Part (1) > i<-1.94 > b<-0.95-i > c<-1.73-i > d<-2.62-i > > y<-c(0.68,0.95,b,c,d) > > y > 0.68 0.95 -0.99 -0.21 0.68 > > rank(y) > 3 5 1 2 4 > > Part(2) > rank(c(0.68,0.95,-0.99,-0.21,0.68)) > 3.5 5.0 1.0 2.0 3.5 >You have specified the exact numbers in part(2). Try part(1) with the following: rank(zapsmall(y)) zapsmall removes tiny floating point errors that are not visible with the default representation of numbers. Jim