[R] Find the three best values in every row

Alfred-Schulze at web.de Alfred-Schulze at web.de
Fri May 7 18:34:07 CEST 2010

-----Ursprüngliche Nachricht-----

Von: S Ellison <S.Ellison at lgc.co.uk>

Gesendet: 07.05.2010 16:44:08

An: r-help at r-project.org,Alfred-Schulze at web.de

Betreff: Re: [R] Find the three best values in every row



> set.seed(17*11)

> d<-data.frame(africa=sample(50, 10), 

> 		europe= sample(50, 10),

> 		n.america= sample(50, 10),

> 		s.america= sample(50, 10),

> 		antarctica= sample((1:50)/20, 10)

> 		)


>#Get three top from each row

>t(apply(d,1,function(x,n) x[which(rank(x)> length(x)-n)], n=3))


>#Get them with names

>get.n<- function(x, names, n)	{

>	rmin<- 

>	rv<-x[w<-which(rank(x)> length(x)-n)]

>	names(rv)<-names[w]

>	return(as.data.frame(rv))



>apply(d,1,get.n, n=3, names=names(d))




>>>> Alfred Schulze [ 05/07/10 2:43 PM >>>


>   Hello,


>   i have a dataframe with the GDP for different Country (in the

>columns) and

>   Years (in the rows).


>   Now i want for every year the best three values, if possible with

>name of

>   the countries (columnnames).


>   For the best it's no problem but for the other two values.


>   Thanks,


>   Alfred


>R-help at r-project.org mailing list


>PLEASE do read the posting guide


>and provide commented, minimal, self-contained, reproducible code.




>This email and any attachments are confidential. Any use, copying or

>disclosure other than by the intended recipient is unauthorised. If 

>you have received this message in error, please notify the sender 

>immediately via +44(0)20 8943 7000 or notify postmaster at lgc.co.uk 

>and delete this message and any copies from your computer and network. 

>LGC Limited. Registered in England 2991879. 

>Registered office: Queens Road, Teddington, Middlesex, TW11 0LY, UKtt

Thanks, that's what I need.

But I have some NA's in the data and 

t(apply(data.frame,1,function(x,n) x[which(rank(x)> length(x)-n)], n=3, na.rm=TRUE))

isn't working. 

And I have a further question. How I get the value also sorted descending?


GRATIS: Movie-Flat mit über 300 Top-Videos. Für WEB.DE Nutzer
dauerhaft kostenlos! Jetzt freischalten unter http://movieflat.web.de

More information about the R-help mailing list