# [R] How to use tapply for quantile

Charles C. Berry cberry at tajo.ucsd.edu
Fri Apr 9 19:32:59 CEST 2010

```On Thu, 8 Apr 2010, James Rome wrote:

> I am trying to calculate quantiles of a data frame column split up by
> two factors:
> # Calculate the quantiles
>    quarts = tapply(gdf\$tt, list(gdf\$Runway, gdf\$OnHour), FUN=quantile,
> na.rm = TRUE)
> This does not work:

It seems like it did work. It returned a matrix list of the results, some
of which are NULL and some of which are numeric vectors of length 5.

Try

str( quarts )

to get a sense of what is going on.

HTH,

Chuck

p.s.  providing commented, minimal, self-contained, reproducible code (as

>> quarts
>   04L       04R       15R       22L       22R       27        32
> 33L       33R
> 0  NULL      Numeric,5 NULL      Numeric,5 NULL      Numeric,5 NULL
> Numeric,5 NULL
> 1  NULL      Numeric,5 NULL      Numeric,5 NULL      NULL      NULL
> Numeric,5 NULL
> 2  NULL      NULL      NULL      Numeric,5 NULL      NULL      NULL
> NULL      NULL
> 3  NULL      NULL      NULL      NULL      NULL      NULL      NULL
> Numeric,5 NULL
> 4  NULL      NULL      NULL      NULL      NULL      NULL      NULL
> NULL      NULL
> 5  NULL      NULL      NULL      NULL      NULL      NULL      NULL
> NULL      NULL
> 6  NULL      NULL      NULL      NULL      NULL      NULL      NULL
> NULL      NULL
> 7  NULL      Numeric,5 NULL      NULL      NULL      Numeric,5 NULL
> Numeric,5 NULL
> 8  NULL      Numeric,5 NULL      Numeric,5 NULL      Numeric,5 NULL
> Numeric,5 NULL
> . . .
>
> But if I leave out either of the two factors, it does work
>> quarts = tapply(gdf\$tt, list(gdf\$Runway), FUN=quantile, na.rm = TRUE)
>> quarts
> \$`04L`
>  0%  25%  50%  75% 100%
>   4    8    9   10   20
>
> \$`04R`
>  0%  25%  50%  75% 100%
>   0    9   10   11   28
> . . . .
>
> How can I get this to work?
>
> Thanks,
> Jim Rome
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help