... 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.4567 at 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.4567 at 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 at 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 <michaeleartz at gmail.com> >>> wrote: >>> >>>> That didn't work Jim! >>>> >>>> Thanks anyway >>>> >>>> On Mon, Apr 18, 2016 at 9:02 PM, Jim Lemon <drjimlemon at 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 <michaeleartz at 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 at 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 at 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 at 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.
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.4567 at 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.4567 at 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.4567 at 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 at 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 <michaeleartz at gmail.com> > >>> wrote: > >>> > >>>> That didn't work Jim! > >>>> > >>>> Thanks anyway > >>>> > >>>> On Mon, Apr 18, 2016 at 9:02 PM, Jim Lemon <drjimlemon at 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 < > michaeleartz at 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 at 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 at 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 at 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]]
If you show us, not just tell us about, a self-contained example someone might show you a non-hacky way of getting the job done. (I don't see an argument to plyr::ddply called 'transform'.) Bill Dunlap TIBCO Software wdunlap tibco.com On Tue, Apr 19, 2016 at 12:18 PM, Michael Artz <michaeleartz at gmail.com> wrote:> 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.4567 at 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.4567 at 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.4567 at 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 at 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 <michaeleartz at gmail.com >> > >> >>> wrote: >> >>> >> >>>> That didn't work Jim! >> >>>> >> >>>> Thanks anyway >> >>>> >> >>>> On Mon, Apr 18, 2016 at 9:02 PM, Jim Lemon <drjimlemon at 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 < >> michaeleartz at 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 at 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 at 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 at 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]]