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
--
----------------------------
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