[R] quantiles and dataframe

Gabor Grothendieck ggrothendieck at gmail.com
Fri Sep 14 14:21:12 CEST 2007


Try this:

sapply(RQ[-1], quantile, probs = c(0, .05, .95, 1), na.rm = TRUE)



On 9/14/07, Anders Bjørgesæter <anders.bjorgesater at bio.uio.no> wrote:
> Hi
>
> I have a dataframe, RQ, like this:
>
> A    B1    B2    B3
> 1    NA    112    12
> 2    NA    123   123
> 3    NA    324    13
> 4    3     21    535
> 5    4     12    33
> 6    7     1     335
> 7    4     NA    3535
> 8    4     NA    NA
> 9    NA    NA    NA
> 10    5    NA    NA
> 12    4    NA    NA
> 15    2    NA    NA
> 17    3    NA    1
> 63    1    NA    1
> 75    NA   NA    NA
> 100   NA   NA    NA
> 123   NA   NA    NA
> 155   NA   NA    NA
> 166   NA   NA    NA
> 177   NA   NA    NA
>
> I want to extract min, max, 5% and 95% from A based on the range of the Bs.
>
> Using this:
>
> s1<-A[min(which(!is.na(B1))):max(which(!is.na(B1)))]
> q1<-quantile(s1,probs=c(0,5,95,100,NA)/100)
>
> I manage to get this by changing the B1 manually for each B
>
> B1    B2        B3
> 4.0    1.00     1.00    (min)
> 63.0   6.00     63.00   (max)
> 4.5    4.5      1.65    (5%)
> 40.0   6.00     63.00   (95%)
>
> I tried to use apply like this: s1<-apply(RQ,2,function(x)
> {A[min(which(!is.na(RQ[,2:4]))):max(which(!is.na(RQ[,2:4])))] })
>
> to get the range of each B but that doesn't work.
>
> Also as you see, s1 includes the A where the B's are NA, e.g. for B1 I
> get the 9 at row 9 (4,5,6,7,8,9,10,12,15,17,63) and not
> (4,5,6,7,8,10,12,15,17,63), which I would prefer.
>
> BUT the main question is how can I extract min, max etc. from each B in
> dataframe RQ without using a loop?
>
> Any help is greatly appreciated!
>
> Best Regards
> Anders
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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