Hi all,
How can I have a dynamic list for different combinations of grouping factors in
the following example? Thanks.
dat <- data.frame(x=rnorm(100),
a=sample(letters[1:5], replace = T),
b=sample(letters[1:5], replace = T),
c=sample(letters[1:5], replace = T),
d=sample(letters[1:5], replace = T))
## define grouping factors
grp <- c('a','d') # or any combination among a, b, c and d
## something like this for the list
lst <- paste('dat$', grp, sep='', collapse =',')
## aggregate on the defined list
aggregate(dat$x, list(lst), mean)
Thanks.
Regards,
Xianming
-------------------- Internet e-Mail Disclaimer --------------------
PRIVILEGED - PRIVATE AND CONFIDENTIAL: This email and any files transmitted with
it are intended solely for the use of the addressee(s) and may contain
information, which is confidential or privileged. If you are not the intended
recipient, be aware that any disclosure, copying, distribution, or use of the
contents of this information is prohibited. In such case, you should destroy
this message and kindly notify the sender by reply e-mail. The views and
opinions expressed in this e-mail are those of the sender and do not necessarily
reflect the views of the company.
VIRUSES: Email transmission cannot be guaranteed to be secure or error free, as
information may be intercepted, corrupted, lost, destroyed, arrive late or
incomplete or contain viruses. This email and any files attached to it have been
checked with virus detection software before transmission. You should
nonetheless carry out your own virus check before opening any attachment. BSES
Limited does not represent or warrant that files attached to this email are free
from computer viruses or other defects and accepts no liability for any loss or
damage that may be caused by software viruses
[[alternative HTML version deleted]]
Replace
lst <- paste('dat$', grp, sep='', collapse =',')
aggregate(dat$x, list(lst), mean)
with
aggregate(dat$x, dat[grp], mean)
The 'by' argument to aggregate should be a list
and data.frames (like dat and dat[grp]) are lists.
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at
r-project.org] On Behalf
> Of Xianming Wei
> Sent: Thursday, August 30, 2012 7:37 PM
> To: r-help at r-project.org
> Subject: [R] dynamic list in aggregate()
>
> Hi all,
>
> How can I have a dynamic list for different combinations of grouping
factors in the
> following example? Thanks.
>
> dat <- data.frame(x=rnorm(100),
> a=sample(letters[1:5], replace = T),
> b=sample(letters[1:5], replace = T),
> c=sample(letters[1:5], replace = T),
> d=sample(letters[1:5], replace = T))
>
> ## define grouping factors
> grp <- c('a','d') # or any combination among a, b, c and
d
> ## something like this for the list
> lst <- paste('dat$', grp, sep='', collapse =',')
> ## aggregate on the defined list
> aggregate(dat$x, list(lst), mean)
>
> Thanks.
>
> Regards,
> Xianming
>
>
> -------------------- Internet e-Mail Disclaimer --------------------
>
> PRIVILEGED - PRIVATE AND CONFIDENTIAL: This email and any files transmitted
with it
> are intended solely for the use of the addressee(s) and may contain
information, which is
> confidential or privileged. If you are not the intended recipient, be aware
that any
> disclosure, copying, distribution, or use of the contents of this
information is prohibited.
> In such case, you should destroy this message and kindly notify the sender
by reply e-
> mail. The views and opinions expressed in this e-mail are those of the
sender and do not
> necessarily reflect the views of the company.
>
> VIRUSES: Email transmission cannot be guaranteed to be secure or error
free, as
> information may be intercepted, corrupted, lost, destroyed, arrive late or
incomplete or
> contain viruses. This email and any files attached to it have been checked
with virus
> detection software before transmission. You should nonetheless carry out
your own virus
> check before opening any attachment. BSES Limited does not represent or
warrant that
> files attached to this email are free from computer viruses or other
defects and accepts
> no liability for any loss or damage that may be caused by software viruses
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
HI,
You can also use these in addition to aggregate:
tapply(dat$x,INDEX=dat[grp],mean)
library(plyr)
ddply(dat,.(dat[grp]$a,dat[grp]$d),summarize,mean(x))
#? dat[grp]$a dat[grp]$d???????? ..1
#1????????? b????????? c? 0.26781378
#2????????? b????????? d -0.01994023
#3????????? c????????? e? 0.14874737
#4????????? d????????? d -0.21051512
#5????????? e????????? b? 0.18821072
A.K.
----- Original Message -----
From: Xianming Wei <XWei at bses.com.au>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc:
Sent: Thursday, August 30, 2012 10:37 PM
Subject: [R] dynamic list in aggregate()
Hi all,
How can I have a dynamic list for different combinations of grouping factors in
the following example? Thanks.
dat <- data.frame(x=rnorm(100),
? ? ? ? ? ? ? ? ? a=sample(letters[1:5], replace = T),
? ? ? ? ? ? ? ? ? b=sample(letters[1:5], replace = T),
? ? ? ? ? ? ? ? ? c=sample(letters[1:5], replace = T),
? ? ? ? ? ? ? ? ? d=sample(letters[1:5], replace = T))
## define grouping factors
grp <- c('a','d') # or any combination among a, b, c and d
## something like this for the list
lst <- paste('dat$', grp, sep='', collapse =',')
## aggregate on the defined list
aggregate(dat$x, list(lst), mean)
Thanks.
Regards,
Xianming
-------------------- Internet e-Mail Disclaimer --------------------
PRIVILEGED - PRIVATE AND CONFIDENTIAL: This email and any files transmitted with
it are intended solely for the use of the addressee(s) and may contain
information, which is confidential or privileged. If you are not the intended
recipient, be aware that any disclosure, copying, distribution, or use of the
contents of this information is prohibited. In such case, you should destroy
this message and kindly notify the sender by reply e-mail. The views and
opinions expressed in this e-mail are those of the sender and do not necessarily
reflect the views of the company.
VIRUSES:? Email transmission cannot be guaranteed to be secure or error free, as
information may be intercepted, corrupted, lost, destroyed, arrive late or
incomplete or contain viruses. This email and any files attached to it have been
checked with virus detection software before transmission. You should
nonetheless carry out your own virus check before opening any attachment. BSES
Limited does not represent or warrant that files attached to this email are free
from computer viruses or other defects and accepts no liability for any loss or
damage that may be caused by software viruses
??? [[alternative HTML version deleted]]
______________________________________________
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.