[R] Compute quantiles with values and correspondent frequencies
Paolo Radaelli
paolo.radaelli at unimib.it
Fri Mar 3 14:16:38 CET 2006
Yes, it should work.
Thanks
----- Original Message -----
From: "Sean Davis" <sdavis2 at mail.nih.gov>
To: "Paolo Radaelli" <paolo.radaelli at unimib.it>; <Roger.Bivand at nhh.no>
Cc: "r-help" <r-help at stat.math.ethz.ch>
Sent: Friday, March 03, 2006 1:49 PM
Subject: Re: [R] Compute quantiles with values and correspondent frequencies
> How about this:
>
> > x <- rpois(100,4)
> > vals <- as.numeric(names(table(x)))
> > vals
> [1] 0 1 2 3 4 5 6 7 8 9 10
> > tx.freq <- as.numeric(table(x))/100
> > tx.freq
> [1] 0.01 0.07 0.12 0.16 0.27 0.10 0.07 0.07 0.11 0.01 0.01
> > quantile(x)
> 0% 25% 50% 75% 100%
> 0 3 4 6 10
> > quantile.from.freq <- function(vals,freq,quant) {
> + ord <- order(vals)
> + cs <- cumsum(freq[ord])
> + return(vals[max(which(cs<quant))+1])}
> > quantile.from.freq(vals,tx.freq,0.5)
> [1] 4
> > quantile.from.freq(vals,tx.freq,0.25)
> [1] 3
> > quantile.from.freq(vals,tx.freq,0.75)
> [1] 6
> > quantile.from.freq(vals,tx.freq,1)
> [1] 10
>
> Sean
>
>
> On 3/3/06 7:30 AM, "Paolo Radaelli" <paolo.radaelli at unimib.it> wrote:
>
> > Yes, but it works only when you have integer counts for each value.
> > When I have only relative frequencies I can't repeat each value a
> > non-integer number of times.
> > Paolo
> >
> > ----- Original Message -----
> > From: "Roger Bivand" <Roger.Bivand at nhh.no>
> > To: "Paolo Radaelli" <paolo.radaelli at unimib.it>
> > Cc: <r-help at stat.math.ethz.ch>
> > Sent: Friday, March 03, 2006 1:18 PM
> > Subject: Re: [R] Compute quantiles with values and correspondent
frequencies
> >
> >
> >> On Fri, 3 Mar 2006, Paolo Radaelli wrote:
> >>
> >>> Dear List, quantile(x) function allows to obtain specified quantiles
of
> >>> a vector of observations x.
> >>>
> >>> Is there an analogous function to compute quantiles in the case one
have
> >>> the vector of the observations x and the correspondent vector f of
> >>> relative frequencies ?
> >>
> >> Just use rep():
> >>
> >> x <- rpois(100, 4) # data
> >> quantile(x)
> >> tx <- table(x) # frequencies (need to be integer counts)
> >> tx
> >> v <- as.numeric(names(tx)) # values
> >> quantile(rep(v, as.integer(tx)))
> >>
> >> You have v and tx, so this should work.
> >>
> >>>
> >>> Thank you
> >>>
> >>> Paolo Radaelli
> >>>
> >>>
> >>>
> >>> [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> R-help at stat.math.ethz.ch mailing list
> >>> https://stat.ethz.ch/mailman/listinfo/r-help
> >>> PLEASE do read the posting guide!
> > http://www.R-project.org/posting-guide.html
> >>>
> >>
> >> --
> >> Roger Bivand
> >> Economic Geography Section, Department of Economics, Norwegian School
of
> >> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
> >> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
> >> e-mail: Roger.Bivand at nhh.no
> >>
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
>
More information about the R-help
mailing list