Skip to content

ave and grouping

4 messages · Patrick Hausmann, Dieter Menne, Gabor Grothendieck

#
Dear list,

# I have a DF like this:
sleep$b   <- c(rep(8,10), rep(9,10))
sleep$me  <- with(sleep, ave(extra, group, FUN = mean))
sleep

# I would like to create a new variable
# holding the b-th value of group 1 and 2.

# This is not what I want, it takes always the '8' from group '1'
# and not the '9'
sleep$gr  <- with(sleep, ave(extra, group, FUN = function(x) x[ b[1] ]))
sleep

Thanks for any help!
Patrick
#
Patrick Hausmann <Patrick.Hausmann <at> uni-bremen.de> writes:
Nice example, but I don't fully understand what you want.

sleep$b[1]
8

Or could it be that you got into the factor-trap? Try

R-FAQ How-do-I-convert-factors-to-numeric_003f

Dieter
#
Try performing ave over the indexes rather than over extra itself:

sleep$newcol <-
  with(sleep, ave(1:nrow(sleep), group, FUN = function(ix) extra[b[ix][1]]))

On Mon, Mar 2, 2009 at 4:28 AM, Patrick Hausmann
<Patrick.Hausmann at uni-bremen.de> wrote:
#
There was an error in the line below. It should have been the following (i.e.
the ix in extra[ix] was missing):

sleep$newcol <-
   with(sleep, ave(1:nrow(sleep), group, FUN = function(ix)
extra[ix][b[ix][1]]))



On Mon, Mar 2, 2009 at 8:01 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote: