[R] Quantiles with ordered categories

William Dunlap
2017-03-14T21:00:15Z

You could round the quantiles of the codes of the ordered factor to
come up with a reasonable result.  E.g.,

quantile.ordered <- function(x, ...)
ordered(levels(x)[as.integer(quantile(as.integer(x), ...))],
levels=levels(x))

> unCut <- log2(2:30)
> Cut <- cut(unCut, breaks=0:6, ordered_result=TRUE)
> quantile(unCut)
      0%      25%      50%      75%     100%
1.000000 3.169925 4.000000 4.523562 4.906891
> quantile(Cut)
[1] (0,1] (3,4] (3,4] (4,5] (4,5]
Levels: (0,1] < (1,2] < (2,3] < (3,4] < (4,5] < (5,6]


Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Tue, Mar 14, 2017 at 1:34 PM, Bert Gunter <bgunter.4567 at gmail.com>
wrote:
> Inline.
> 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, Mar 14, 2017 at 12:36 PM,  <matthias-gondan at gmx.de> wrote:
>> Dear R users,
>>
>> This works:
>>
>> quantile(1:10, probs=0.5)
>>
>> This fails (obviously):
>>
>> quantile(factor(1:10), probs=0.5)
>>
>> But why do quantiles for ordered factors not work either?
>>
>> quantile(ordered(1:10), probs=0.5)
>>
>> Is it because interpolation (see the optional type argument) is not
defined?
> Yes.
>
>
> Is there an elegant workaround?
> No. How can there be? By definition, all that is assumed by an ordered
> factor is an ordering of the categories. How can you
"interpolate" in
> ordered(letters[1:3]) . ASAIK there is no "a.5"  .
>
> -- Bert
>
>
>
>>
>> Thank you.
>>
>> Best wishes,
>>
>> Matthias
>>
>>         [[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.