Dear list friends I fail to understand how to find means for multiple groups using the by() function. Help would be appreciated. Thanks. Bill x <- runif(20,0,10) group <- rep(c("A","B"),10) df <-data.frame(x,group) #df #show the data rm(x,group) attach(df) sd(x) # sd is defined mean(x) #so is mean by(x,group,sd) #this works for both groups by(x,group,mean) #this does not produces this output:> x <- runif(20,0,10) > group <- rep(c("A","B"),10) > df <-data.frame(x,group) > #df #show the data > > rm(x,group) > attach(df) > > sd(x) # sd is defined[1] 2.952699> mean(x) #so is mean[1] 5.026441> > by(x,group,sd) #this works for both groupsINDICES: A [1] 2.813504 ------------------------------------------------------------------------------------------------------------ INDICES: B [1] 3.236663> by(x,group,mean) #this does notError in FUN(X[[as.integer(1)]], ...) : couldn't find function "FUN" I am using a Mac OS 10.3.4 running R 1.9.1 -- ---------------------------- William Revelle http://pmc.psych.northwestern.edu/revelle.html Department of Psychology, Northwestern University Personality Project: http://personality-project.org/personality.html
William Revelle wrote:> Dear list friends > > I fail to understand how to find means for multiple groups using the > by() function. Help would be appreciated. Thanks. > Bill > > > x <- runif(20,0,10) > group <- rep(c("A","B"),10) > df <-data.frame(x,group) > #df #show the data > > rm(x,group) > attach(df) > > sd(x) # sd is defined > mean(x) #so is mean > > by(x,group,sd) #this works for both groups > by(x,group,mean) #this does not > > > produces this output: > > >> x <- runif(20,0,10) >> group <- rep(c("A","B"),10) >> df <-data.frame(x,group) >> #df #show the data >> >> rm(x,group) >> attach(df) >> >> sd(x) # sd is defined > > [1] 2.952699 > >> mean(x) #so is mean > > [1] 5.026441 > >> >> by(x,group,sd) #this works for both groups > > INDICES: A > [1] 2.813504 > ------------------------------------------------------------------------------------------------------------ > > INDICES: B > [1] 3.236663 > >> by(x,group,mean) #this does not > > Error in FUN(X[[as.integer(1)]], ...) : couldn't find function "FUN" > > > I am using a Mac OS 10.3.4 running R 1.9.1Hi Bill, Works for me. Do you have a local "mean" defined? Try rm(mean) and re-try. > R.version _ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 1 minor 9.1 year 2004 month 06 day 21 language R --sundar
> From: Sundar Dorai-Raj > > William Revelle wrote: > > > Dear list friends > > > > I fail to understand how to find means for multiple groups > using the > > by() function. Help would be appreciated. Thanks. > > Bill > > > > > > x <- runif(20,0,10) > > group <- rep(c("A","B"),10) > > df <-data.frame(x,group) > > #df #show the data > > > > rm(x,group) > > attach(df) > > > > sd(x) # sd is defined > > mean(x) #so is mean > > > > by(x,group,sd) #this works for both groups > > by(x,group,mean) #this does not > > > > > > produces this output: > > > > > >> x <- runif(20,0,10) > >> group <- rep(c("A","B"),10) > >> df <-data.frame(x,group) > >> #df #show the data > >> > >> rm(x,group) > >> attach(df) > >> > >> sd(x) # sd is defined > > > > [1] 2.952699 > > > >> mean(x) #so is mean > > > > [1] 5.026441 > > > >> > >> by(x,group,sd) #this works for both groups > > > > INDICES: A > > [1] 2.813504 > > > -------------------------------------------------------------- > ---------------------------------------------- > > > > INDICES: B > > [1] 3.236663 > > > >> by(x,group,mean) #this does not > > > > Error in FUN(X[[as.integer(1)]], ...) : couldn't find function "FUN" > > > > > > I am using a Mac OS 10.3.4 running R 1.9.1 > > Hi Bill, > > Works for me. Do you have a local "mean" defined? Try > rm(mean) and re-try. > > > R.version > _ > platform i386-pc-mingw32 > arch i386 > os mingw32 > system i386, mingw32 > status > major 1 > minor 9.1 > year 2004 > month 06 > day 21 > language R > > --sundarOr try replacing `mean' with `base:::mean'. BTW, why not just use tapply(x, group, mean)? Andy