[R] Interquartile Range
William Dunlap
wdunlap at tibco.com
Tue Apr 19 17:34:40 CEST 2016
> 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]]
More information about the R-help
mailing list