[R] using "mean" in by(x,y,mean)
Liaw, Andy
andy_liaw at merck.com
Thu Jul 15 00:04:14 CEST 2004
> 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
>
> --sundar
Or try replacing `mean' with `base:::mean'. BTW, why not just use tapply(x,
group, mean)?
Andy
More information about the R-help
mailing list