[R] Interquartile Range
Bert Gunter
bgunter.4567 at gmail.com
Tue Apr 19 19:30:18 CEST 2016
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.
More information about the R-help
mailing list