[R] Merging by() results back into original data frame?

Thomas Lumley tlumley at uw.edu
Tue Mar 22 00:09:28 CET 2011


On Tue, Mar 22, 2011 at 11:42 AM, ivo welch <ivowel at gmail.com> wrote:
> dear R experts---I am trying to figure out what the recommended way is
> to merge by() results back into the original data frame.  for example,
> I want to have a flag that tells me whether a particular row contains
> the maximum for its group.
>
>  d <- data.frame(group=as.factor(rep(1:3,each=3)), val=rnorm(9))
>  highestvals <- by( d, d$group, function(d)(max(d$val)) )
>
>  ## and now?  iterate over levels( d$group ) ?  how do I merge
> highestvals back into d?

The easiest approach is probably to use ave() instead of by().
Otherwise match() will tell you where to put each number.

   -thomas

-- 
Thomas Lumley
Professor of Biostatistics
University of Auckland



More information about the R-help mailing list