[R] Fastest way to compare a single value with all values in one column of a data frame

Jessica Streicher j.streicher at micromata.de
Wed Jan 30 13:38:44 CET 2013


If you wanted this for all values in x that are smaller, i'd use

x[x$a < y$a,] <- y

for just the smallest:

x[intersect(which(x$a < y$a),which.min(x$a)),] <- y


On 29.01.2013, at 22:11, Dimitri Liakhovitski wrote:

> Hello!
> 
> I have a large data frame x:
> x<-data.frame(item=letters[1:5],a=1:5,b=11:15)  # in actuality, x has 1000
> rows
> x$item<-as.character(x$item)
> I also have a small data frame y with just 1 row:
> y<-data.frame(item="f",a=3,b=10)
> y$item<-as.character(y$item)
> 
> I have to decide if y$a is larger than the smallest of all the values in
> x$a. If it is, I want y to replace the whole row in x that has the lowest
> value in column a.
> This is how I'd do it.
> 
> if(y$a>min(x$a)){
>  whichmin<-which(x$a==min(x$a))
>  x[whichmin,]<-y[1,]
> }
> 
> 
> I am wondering if there is a faster way of doing it. What would be the
> fastest possible way? I'd have to do it, unfortunately, many-many times.
> 
> Thank you very much!
> 
> -- 
> Dimitri Liakhovitski
> gfk.com <http://marketfusionanalytics.com/>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.



More information about the R-help mailing list