[R] Converting rankings to paired-comparisons

Dimitris Rizopoulos d.rizopoulos at erasmusmc.nl
Tue Jan 20 10:33:52 CET 2009


one way is:

x <- matrix(c(10,20,30,40,0,
     10,10,10,10,50,
     30,30,30,5,5), nrow=3, ncol=5, byrow=TRUE,
     dimnames = list(1:3, letters[1:5])
)

ind <- combn(ncol(x), 2)
out <- apply(ind, 2, function (i) as.numeric(x[, i[1]] >= x[, i[2]]))
colnames(out) <- apply(ind, 2, function (i, nams)
     paste(nams[i[1]], nams[i[2]], sep = ""), nams = colnames(x))
out


I hope it helps.

Best,
Dimitris


Iuri Gavronski wrote:
> Hi,
> 
> I need to convert a ranking dataset (actually, it is an ipsative
> scale) to paired-comparisons.
> 
> For example, if I have this data:
> x <- matrix(c(10,20,30,40,0,
>     10,10,10,10,50,
>     30,30,30,5,5), nrow=3, ncol=5, byrow=TRUE,
>     dimnames = list(1:3, letters[1:5])
> )
> 
> For every pair of data, I would need to apply a transformation like:
> 
> if a < b, ab = 0, otherwise ab=1
> 
> In the end, I need a matrix like that:
> 
> ab ac ad ae bc bd be cd ce de
> 0  0  0  1  0  0  1  0  1  1
> 1  1  1  0  1  1  0  1  0  0
> 1  1  1  1  1  1  1  1  1  1
> 
> Would anyone suggest a "no loops" way for doing that?
> 
> By the way, I would need to apply a tetrachoric correlation to this
> output matrix. Should I use package polycor? Any thoughts would be
> welcome.
> 
> Thanks,
> 
> Iuri.
> 
> ______________________________________________
> R-help at r-project.org 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.
> 

-- 
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus Medical Center

Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014




More information about the R-help mailing list