Oh thanks for that clarification Bert! Hope you enjoyed your coffee! I ended up just using the transform argument in the ddply function. It worked and it repeated, then I called a mode function in another call to ddply that summarised. Kinda hacky but oh well!
On Tue, Apr 19, 2016 at 12:31 PM, Bert Gunter <bgunter.4...@gmail.com> wrote: > ... and I'm getting another cup of coffee... > > -- Bert > Bert Gunter > > "The trouble with having an open mind is that people keep coming along > and sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > > On Tue, Apr 19, 2016 at 10:30 AM, Bert Gunter <bgunter.4...@gmail.com> > wrote: > > NO NO -- I am wrong! The paste() expression is of course evaluated. > > It's just that a character string is returned of the form "something - > > something". > > > > I apologize for the confusion. > > > > -- Bert > > > > > > > > > > Bert Gunter > > > > "The trouble with having an open mind is that people keep coming along > > and sticking things into it." > > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > > > > > On Tue, Apr 19, 2016 at 10:25 AM, Bert Gunter <bgunter.4...@gmail.com> > wrote: > >> To be precise: > >> > >> paste(round(quantile(x,0.25),0),round(quantile(x,0.75),0),sep="-") > >> > >> is an expression that evaluates to a character string: > >> "round(quantile(x,.25),0) - round(quantile(x,0.75),0)" > >> > >> no matter what the argument of your function, x. Hence > >> > >> return(paste(...)) will return this exact character string and never > >> evaluates x. > >> > >> > >> Cheers, > >> Bert > >> > >> > >> > >> > >> > >> > >> > >> > >> Bert Gunter > >> > >> "The trouble with having an open mind is that people keep coming along > >> and sticking things into it." > >> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > >> > >> > >> On Tue, Apr 19, 2016 at 8:34 AM, William Dunlap via R-help > >> <r-help@r-project.org> wrote: > >>>> That didn't work Jim! > >>> > >>> It always helps to say how the suggestion did not work. Jim's > >>> function had a typo in it - was that the problem? Or did you not > >>> change the call to ddply to use that function. Here is something > >>> that might "work" for you: > >>> > >>> library(plyr) > >>> > >>> data <- data.frame(groupColumn=rep(1:5,1:5), col1=2^(0:14)) > >>> myIqr <- function(x) { > >>> paste(round(quantile(x,0.25),0),round(quantile(x,0.75),0),sep="-") > >>> } > >>> ddply(data, ~groupColumn, summarise, col1_myIqr=myIqr(col1), > >>> col1_IQR=stats::IQR(col1)) > >>> # groupColumn col1_myIqr col1_IQR > >>> #1 1 1-1 0 > >>> #2 2 2-4 1 > >>> #3 3 12-24 12 > >>> #4 4 112-320 208 > >>> #5 5 2048-8192 6144 > >>> > >>> The important point is that > >>> paste(round(quantile(x,0.25),0),round(quantile(x,0.75),0),sep="-") > >>> is not a function, it is an expression. ddplyr wants functions. > >>> > >>> > >>> Bill Dunlap > >>> TIBCO Software > >>> wdunlap tibco.com > >>> > >>> On Tue, Apr 19, 2016 at 7:56 AM, Michael Artz <michaelea...@gmail.com> > >>> wrote: > >>> > >>>> That didn't work Jim! > >>>> > >>>> Thanks anyway > >>>> > >>>> On Mon, Apr 18, 2016 at 9:02 PM, Jim Lemon <drjimle...@gmail.com> > wrote: > >>>> > >>>> > Hi Michael, > >>>> > At a guess, try this: > >>>> > > >>>> > iqr<-function(x) { > >>>> > > >>>> > return(paste(round(quantile(x,0.25),0),round(quantile(x,0.75),0),sep="-") > >>>> > } > >>>> > > >>>> > .col3_Range=iqr(datat$tenure) > >>>> > > >>>> > Jim > >>>> > > >>>> > > >>>> > > >>>> > On Tue, Apr 19, 2016 at 11:15 AM, Michael Artz < > michaelea...@gmail.com> > >>>> > wrote: > >>>> > > Hi, > >>>> > > I am trying to show an interquartile range while grouping values > >>>> using > >>>> > > the function ddply(). So my function call now is like > >>>> > > > >>>> > > groupedAll <- ddply(data > >>>> > > ,~groupColumn > >>>> > > ,summarise > >>>> > > ,col1_mean=mean(col1) > >>>> > > ,col2_mode=Mode(col2) #Function I wrote for > getting > >>>> the > >>>> > > mode shown below > >>>> > > > >>>> > > > ,col3_Range=paste(as.character(round(quantile(datat$tenure,c(.25)))), > >>>> > > as.character(round(quantile(data$tenure,c(.75)))), sep = "-") > >>>> > > ) > >>>> > > > >>>> > > #custom Mode function > >>>> > > Mode <- function(x) { > >>>> > > ux <- unique(x) > >>>> > > ux[which.max(tabulate(match(x, ux)))] > >>>> > > } > >>>> > > > >>>> > > I am not sre what is going wrong on my interquartile range > function, it > >>>> > > works on its own outside of ddply() > >>>> > > > >>>> > > [[alternative HTML version deleted]] > >>>> > > > >>>> > > ______________________________________________ > >>>> > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >>>> > > 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. > >>>> > > >>>> > >>>> [[alternative HTML version deleted]] > >>>> > >>>> ______________________________________________ > >>>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >>>> 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. > >>>> > >>> > >>> [[alternative HTML version deleted]] > >>> > >>> ______________________________________________ > >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >>> 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.