[R] Merging by() results back into original data frame?
William Dunlap
wdunlap at tibco.com
Tue Mar 22 00:09:30 CET 2011
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of ivo welch
> Sent: Monday, March 21, 2011 3:43 PM
> To: r-help
> Subject: [R] Merging by() results back into original data frame?
>
> 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))
ave() could do what you want without using by(). E.g.,
> d$isGroupMax <- with(d, ave(val, group, FUN=max) == val)
> d
group val isGroupMax
1 1 0.21496662 FALSE
2 1 -1.44767939 FALSE
3 1 0.39635971 TRUE
4 2 0.60235172 FALSE
5 2 0.94581401 TRUE
6 2 0.01665084 FALSE
7 3 -0.58277312 FALSE
8 3 0.82930370 FALSE
9 3 1.02906920 TRUE
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> 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?
>
> advice appreciated.
>
> sincerely,
>
> /iaw
> ----
> Ivo Welch (ivo.welch at brown.edu, ivo.welch at gmail.com)
>
> ______________________________________________
> 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