x <- c(23,24,22,20,24,27,28,27,24,23,24,27,27,28,27,23,24,28,27,25,19,24,20,28,26,23,23,20,11,24,25,23,18,20,20,24,23,25,28,26,26,23,22,24,21,20,22,20,25,20,22,23,25,23,23,22,24,25,21,12,17,20,23,23,20,28,24,24,24,24,28,25,21,25,25,18,17,26,28,21,27,22,21,25,22,23,26,19,25,21,13,24,25,26,25,25,22,21,23,25,24,21,21,25,22,20,20,23,28,23,28,24,18,20,28,21,21,25,19,18,21,22,24,15,28,26,23,26,20,22,20,23,22,24,23,22,26,23,27,23,21,26,23,21,27,19,23,25,23,22,22,25,25,28,28,20,25,19,25,22,18,20)
#'GNU S' R Code compiled by R2WASP v. 1.0.44 ()
#Author: Prof. Dr. P. Wessa
#To cite this work: AUTHOR(S), (YEAR), YOUR SOFTWARE TITLE (vNUMBER) in Free Statistics Software (v$_version), Office for Research Development and Education, URL http://www.wessa.net/rwasp_YOURPAGE.wasp/
#Source of accompanying publication: Office for Research, Development, and Education
#Technical description: Write here your technical program description (don't use hard returns!)
x <-sort(x[!is.na(x)])
q1 <- function(data,n,p,i,f) {
np <- n*p;
i <<- floor(np)
f <<- np - i
qvalue <- (1-f)*data[i] + f*data[i+1]
}
q2 <- function(data,n,p,i,f) {
np <- (n+1)*p
i <<- floor(np)
f <<- np - i
qvalue <- (1-f)*data[i] + f*data[i+1]
}
q3 <- function(data,n,p,i,f) {
np <- n*p
i <<- floor(np)
f <<- np - i
if (f==0) {
qvalue <- data[i]
} else {
qvalue <- data[i+1]
}
}
q4 <- function(data,n,p,i,f) {
np <- n*p
i <<- floor(np)
f <<- np - i
if (f==0) {
qvalue <- (data[i]+data[i+1])/2
} else {
qvalue <- data[i+1]
}
}
q5 <- function(data,n,p,i,f) {
np <- (n-1)*p
i <<- floor(np)
f <<- np - i
if (f==0) {
qvalue <- data[i+1]
} else {
qvalue <- data[i+1] + f*(data[i+2]-data[i+1])
}
}
q6 <- function(data,n,p,i,f) {
np <- n*p+0.5
i <<- floor(np)
f <<- np - i
qvalue <- data[i]
}
q7 <- function(data,n,p,i,f) {
np <- (n+1)*p
i <<- floor(np)
f <<- np - i
if (f==0) {
qvalue <- data[i]
} else {
qvalue <- f*data[i] + (1-f)*data[i+1]
}
}
q8 <- function(data,n,p,i,f) {
np <- (n+1)*p
i <<- floor(np)
f <<- np - i
if (f==0) {
qvalue <- data[i]
} else {
if (f == 0.5) {
qvalue <- (data[i]+data[i+1])/2
} else {
if (f < 0.5) {
qvalue <- data[i]
} else {
qvalue <- data[i+1]
}
}
}
}
lx <- length(x)
qval <- array(NA,dim=c(99,8))
mystep <- 25
mystart <- 25
if (lx>10){
mystep=10
mystart=10
}
if (lx>20){
mystep=5
mystart=5
}
if (lx>50){
mystep=2
mystart=2
}
if (lx>=100){
mystep=1
mystart=1
}
for (perc in seq(mystart,99,mystep)) {
qval[perc,1] <- q1(x,lx,perc/100,i,f)
qval[perc,2] <- q2(x,lx,perc/100,i,f)
qval[perc,3] <- q3(x,lx,perc/100,i,f)
qval[perc,4] <- q4(x,lx,perc/100,i,f)
qval[perc,5] <- q5(x,lx,perc/100,i,f)
qval[perc,6] <- q6(x,lx,perc/100,i,f)
qval[perc,7] <- q7(x,lx,perc/100,i,f)
qval[perc,8] <- q8(x,lx,perc/100,i,f)
}
postscript(file="/var/www/html/rcomp/tmp/1ywnm1287242011.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) 
myqqnorm <- qqnorm(x,col=2)
qqline(x)
grid()
dev.off()

#Note: the /var/www/html/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab
load(file="/var/www/html/rcomp/createtable")

a<-table.start()
a<-table.row.start(a)
a<-table.element(a,'Percentiles - Ungrouped Data',9,TRUE)
a<-table.row.end(a)
a<-table.row.start(a)
a<-table.element(a,'p',1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_1.htm', 'Weighted Average at Xnp',''),1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_2.htm','Weighted Average at X(n+1)p',''),1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_3.htm','Empirical Distribution Function',''),1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_4.htm','Empirical Distribution Function - Averaging',''),1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_5.htm','Empirical Distribution Function - Interpolation',''),1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_6.htm','Closest Observation',''),1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_7.htm','True Basic - Statistics Graphics Toolkit',''),1,TRUE)
a<-table.element(a,hyperlink('http://www.xycoon.com/method_8.htm','MS Excel (old versions)',''),1,TRUE)
a<-table.row.end(a)
for (perc in seq(mystart,99,mystep)) {
a<-table.row.start(a)
a<-table.element(a,round(perc/100,2),1,TRUE)
for (j in 1:8) {
a<-table.element(a,round(qval[perc,j],6))
}
a<-table.row.end(a)
}
a<-table.end(a)
table.save(a,file="/var/www/html/rcomp/tmp/2colv1287242011.tab") 
try(system("convert tmp/1ywnm1287242011.ps tmp/1ywnm1287242011.png",intern=TRUE))

