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
ave and grouping
4 messages · Patrick Hausmann, Dieter Menne, Gabor Grothendieck
Patrick Hausmann <Patrick.Hausmann <at> uni-bremen.de> writes:
# 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
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:
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
______________________________________________ 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.
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:
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:
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
______________________________________________ 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.