Skip to content
Prev 332499 / 398506 Next

aggregate function output

You could also try:
library(plyr)
?newdf <- function(.data, ...) {
?? eval(substitute(data.frame(...)), .data, parent.frame())
?}

x1 <- ddply(mtcars,.(cyl,gear), newdf, mgp=t(quantile(mpg)),hp=t(quantile(hp))) #(found in one of the google group discussions)
#or



library(data.table)
dt1 <- data.table(mtcars,key=c('cyl','gear'))
?dt2 <- dt1[,c(as.list(quantile(mpg)),as.list(quantile(hp))),by=key(dt1)]
?indx <- grep("%",names(dt2))
?x2 <- as.data.frame(dt2)
names(x2)[indx] <- paste(rep(c("mpg", "hp"),each=5), names(x2)[indx],sep=".")
A.K.
On Friday, November 1, 2013 9:35 AM, arun <smartpink111 at yahoo.com> wrote:
Hi,
Try:
do.call(data.frame,c(x,check.names=FALSE))
A.K.


Hello, 

? 

I?m using function aggregate in R 3.0.2. ?If I run the instruction 
x<-aggregate(cbind(mpg,hp)~cyl+gear,data=mtcars,quantile) I get the 
result the following data.frame: 

? 

cyl 

gear 

mpg.0% 

mpg.25% 

mpg.50% 

mpg.75% 

mpg.100% 

hp.0% 

hp.25% 

hp.50% 

hp.75% 

hp.100% 

4 

3 

21.5 

21.5 

21.5 

21.5 

21.5 

97 

97 

97 

97 

97 

6 

3 

18.1 

18.925 

19.75 

20.575 

21.4 

105 

106.25 

107.5 

108.75 

110 

8 

3 

10.4 

14.05 

15.2 

16.625 

19.2 

150 

175 

180 

218.75 

245 

4 

4 

21.4 

22.8 

25.85 

30.9 

33.9 

52 

64.25 

66 

93.5 

109 

6 

4 

17.8 

18.85 

20.1 

21 

21 

110 

110 

116.5 

123 

123 

4 

5 

26 

27.1 

28.2 

29.3 

30.4 

91 

96.5 

102 

107.5 

113 

6 

5 

19.7 

19.7 

19.7 

19.7 

19.7 

175 

175 

175 

175 

175 

8 

5 

15 

15.2 

15.4 

15.6 

15.8 

264 

281.75 

299.5 

317.25 

335 

? 

So far so good, however the strange part happens when I run dim(x) or 
names(x), because the results are 8 4 (dim(x)) and "cyl" ?"gear" "mpg" 
"hp" (names(x)). Why this occurs and how do I transform it in a regular 
data.frame with 12 columns? 

? 

Thank you in advance, 

? 

Daniel 

?
R version 3.0.2 (2013-09-25) 

Platform: i386-w64-mingw32/i386 (32-bit) 

? 

locale: 

[1] LC_COLLATE=Portuguese_Portugal.1252 
LC_CTYPE=Portuguese_Portugal.1252 
LC_MONETARY=Portuguese_Portugal.1252 LC_NUMERIC=C ? ? ? ? ? ? ? ? ? ? ? 


[5] LC_TIME=Portuguese_Portugal.1252 ? ? 

? 

attached base packages: 

[1] grDevices datasets ?splines ? graphics ?stats ? ? tcltk ? ? utils ? 
methods ? base ? ? 

? 

other attached packages: 

[1] svSocket_0.9-55 TinnR_1.0-5 ? ? R2HTML_2.2.1 ? ?Hmisc_3.12-2 
Formula_1.1-1 ? survival_2.37-4 

? 

loaded via a namespace (and not attached): 

[1] cluster_1.14.4 ?grid_3.0.2 ? ? ?lattice_0.20-23 rpart_4.1-3 
svMisc_0.9-69 ? tools_3.0.2 ? 

? 



"Confidencialidade: Esta mensagem (e eventuais ficheiros
anexos) ? destinada exclusivamente ?s pessoas nela indicadas e tem 
natureza confidencial. Se receber esta mensagem por engano, por favor 
contacte o remetente e elimine a mensagem e ficheiros, sem tomar 
conhecimento do respectivo conte?do e sem reproduzi-la ou divulg?-la. 

Confidentiality Warning: This e-mail message (and any attached 
files) is confidential and is intended solely for the use of the 
individual or entity to whom it is addressed. lf you are not the 
intended recipient of this message please notify the sender and delete 
and destroy all copies immediately."