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@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.