####useful function for association of variable name finder<-function(data, vector){ Scolnames=matrix(nrow = length(vector),ncol=ncol(data)) ;colnames(Scolnames)=colnames(data) for (nvi in 1 : length(vector)){ Scolnames[nvi,]=colnames(data)==vector[nvi] } s=apply(Scolnames,2,sum) ;sm=s*c(1:ncol(data)) return(sm) } #####Parameter of transformation from datasets pretrans<-function(data,fittab,graphpretrans=FALSE){ forms=c("L.I", "L.D", "LL.TI", "LL.TD", "CC.I", "CC.D", "LC.I", "LC.D","CL.I", "CL.D", "CCC.I", "CCC.D", "CCC.TD", "CCC.TI", "LCL.I","LCL.D", "LCL.TD", "LCL.TI", "CLC.I", "CLC.D") tabtrans=as.data.frame(matrix(ncol=7,nrow=0)) colnames(tabtrans)=c("variable","type","categories","s1","v1","s2","v2") for (nv in 1 :nrow(fittab)){ NVn=fittab[nv,1] SVN= finder(data,NVn) VN=data[,SVN] if(is.numeric(VN)==F) { l=levels(VN);nl=length(l) tabtransnv=as.data.frame(matrix(ncol=7,nrow=nl));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,nl) tabtransnv[,2]=rep("QUAL",nl) tabtransnv[,3]=l tabtransnv[,4]=seq(from=0,to=1, length=nl) tabtrans=rbind(tabtrans,tabtransnv) } else { METnv= fittab[nv,2] if(sum(forms==METnv)==0){ stop("The categories in the form column are not in the preset form defined in the function pretrans") } if(METnv=="L.I"){ tabtransnv=as.data.frame(matrix(ncol=7,nrow=1));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=NVn tabtransnv[,2]="QUAN" tabtransnv[,4]=0 tabtransnv[,5]=min(VN,na.rm =TRUE) tabtransnv[,6]=1 tabtransnv[,7]=max(VN,na.rm =TRUE) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="L.D"){ tabtransnv=as.data.frame(matrix(ncol=7,nrow=1));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=NVn tabtransnv[,2]="QUAN" tabtransnv[,4]=1 tabtransnv[,5]=min(VN,na.rm =TRUE) tabtransnv[,6]=0 tabtransnv[,7]=max(VN,na.rm =TRUE) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LL.TI"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(1,0) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LL.TD"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(0,1) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CC.I"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(0,1) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CC.D"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(1,0) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LC.I"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(1,1) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LC.D"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(0,0) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CL.I"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(0,1) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CL.D"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/2)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=2));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,2) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1) tabtransnv[,6]=c(1,0) tabtransnv[,7]=c(S1,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CCC.I"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,0.5,1) tabtransnv[,6]=c(0,0.5,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CCC.D"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,0.5,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(1,0.5,0) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CCC.TI"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,1,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(0,1,0) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CCC.TD"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,0,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(1,0,1) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LCL.I"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,0.5,0.5) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(0.5,0.5,1) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LCL.D"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,0.5,0.5) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(0.5,0.5,0) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LCL.TI"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,1,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(1,1,0) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="LCL.TD"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,0,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(0,0,1) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CLC.I"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(0,0,1) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(0,1,1) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } if(METnv=="CLC.D"){ S1=((max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) S2=(2*(max(VN,na.rm =TRUE)-min(VN,na.rm =TRUE))/3)+min(VN,na.rm =TRUE) tabtransnv=as.data.frame(matrix(ncol=7,nrow=3));colnames(tabtransnv)=c("variable","type","categories","s1","v1","s2","v2") tabtransnv[,1]=rep(NVn,3) tabtransnv[,2]="QUAN" tabtransnv[,4]=c(1,1,0) tabtransnv[,5]=c(min(VN,na.rm =TRUE),S1,S2) tabtransnv[,6]=c(1,0,0) tabtransnv[,7]=c(S1,S2,max(VN,na.rm =TRUE)) tabtrans=rbind(tabtrans,tabtransnv) } } } if(graphpretrans==TRUE){ datat=trans(data=data,tabtrans = tabtrans) ng=ncol(datat) nc=ceiling(sqrt(ng)) nr=floor(sqrt(ng)) par(mfrow=c(nc,nr)) par(mar=c(3,3,0.5,0.5)) for(ngi in 1: ng){ Vti=colnames(datat)[ngi] plot(datat[,Vti]~data[,Vti],ylim=c(-0.1,1.1),ylab="Notation",main=Vti,pch=19,yaxt="n",bty="l") axis(2,at=c(0,0.5,1)) } } return(tabtrans) } ######function of transformation at individuals scale transf<-function(var,type,S1,V1,S2,V2){ if(type=="QUAL"){ S=S1 } if(type=="QUAN"){ a=(S2-S1)/(V2-V1) b=S1-(a*V1) S=a*var+b } return(S) } ######function of aggregation at individuals scale aggrind<-function(V,MET,P){ if(MET=="MEAN"){ O=weighted.mean(V,P,na.rm=TRUE) } if(MET=="MIN"){ O=min(V,na.rm=TRUE) } if(MET=="MAX"){ O=max(V,na.rm=TRUE) } return(O) } ##############function of transformation for datasets trans<-function(data,tabtrans){ level=levels(tabtrans$variable) datat=matrix(nrow=nrow(data),ncol=length(level));colnames(datat)=level;rownames(datat)=rownames(data) for( y in 1:ncol(datat)){ Vy=colnames(datat)[y] Sy=finder(data,Vy) if(sum(Sy)==0){ stop("The variable in the table of transformation are not in the data") } v=data[,Sy] tabV=subset(tabtrans,tabtrans$variable==Vy) vt=vector() for (nr in 1 : length(v)){ vnr=v[nr] if(is.na(vnr)==TRUE){ vt[nr]=NA } if(is.na(vnr)==FALSE){ if(tabV$type[1]=="QUAN"){ for(ns in 1 : nrow(tabV)){ SBns=tabV$v1[ns];SHns=tabV$v2[ns] if(SBns>= SHns){ stop("The value v1 must be lower than the value v2 in the table") } if(vnr>=SBns&vnr<=SHns){ vt[nr]=transf(vnr,type="QUAN",S1=tabV$s1[ns],V1=tabV$v1[ns],S2=tabV$s2[ns],V2=tabV$v2[ns]) } } } if(tabV$type[1]=="QUAL"){ for(ns in 1 : nrow(tabV)){ T=tabV$categories[ns] if(as.character(vnr)==as.character(T)){ vt[nr]=transf(vnr,type="QUAL",S1=tabV$s1[ns]) } } } } } Vy=colnames(datat)[y] Syt=finder(datat,Vy) datat[,Syt]=vt } return(datat) } ##############function of aggregation for datasets aggr<-function(datat,tabaggr){ if(max(datat,na.rm=T)>1|min(datat.na.rm=T)<0){ stop("The notation after the transformation are not between 0 and 1 ") } tabaggr$ON <- factor(tabaggr$ON) OO=tabaggr$ON[1] for (i in 2: nrow(tabaggr)){ if(tabaggr$ON[i-1]!=tabaggr$ON[i]){ OO=c(OO,tabaggr$ON[i]) } } nO=levels(tabaggr$ON)[OO] resO=matrix(ncol=length(nO),nrow=nrow(datat)) colnames(resO)=nO;rownames(resO)=rownames(datat) restot=cbind(datat,resO) for (nbO in 1: length(nO)){ nOi=nO[nbO] tagr=subset(tabaggr,tabaggr$ON==nOi) vecvnr=tagr$IN svnr=finder(restot,vecvnr) if(max(svnr)>ncol(restot)){ stop("The variable in the IN section are not wll writen") } for(vi in 1: length(vecvnr)){ vni=vecvnr[vi] svi=finder(restot,vni) if(sum(svi)==0){ stop("The variable in the IN column in the table of aggregation are not in the data or in the ON column of the table") } } for (nr in 1: nrow(restot)){ vnr=restot[nr,svnr] M=tagr$method[1] P=tagr$weight restot[nr,nOi]=aggrind(V=vnr,MET=M,P=P) } } if(is.na(sum(datat))==T){ warning("missing data are presented in the input notation after the transformation; in the aggregation, the missing values are not considered and the aggregation are made with the other variables ",call.=FALSE) } resaggr=list() sno=nO;fsno=finder(restot,sno) resaggr=restot[,fsno] return(resaggr) } #####function TATALE tatale<-function(data,tabtrans,tabaggr,graphtrans=FALSE,graphaggr=FALSE){ datat=trans(data=data,tabtrans = tabtrans) resaggr=aggr(datat,tabaggr) if(graphtrans==T){ ng=ncol(datat) nc=ceiling(sqrt(ng)) nr=floor(sqrt(ng)) par(mfrow=c(nc,nr)) par(mar=c(3,3,0.5,0.5)) for(ngi in 1: ng){ Vti=colnames(datat)[ngi] plot(datat[,Vti]~data[,Vti],ylim=c(-0.1,1.1),ylab="Scores",main=Vti,pch=19,yaxt="n",bty="l") axis(2,at=c(0,0.5,1)) } } if(graphaggr==TRUE){ plot.new() par(mfrow=c(1,1)) graphaggr(tabaggr,orientation="LR",space=1) } res=list() res$aggr=resaggr res$trans=datat return(res) } ###input graphaggr=function(tabaggr,orientation="LR",space=1){ number=vector(length=nrow(tabaggr)) ni=1 for (ini in 1: nrow(tabaggr)){ inv=tabaggr[ini,2] s=sum(tabaggr[,1]==as.character(inv[1])) number[ini]=ifelse(s==0,ni,"X") } n=1:nrow(tabaggr) while(sum(number=="X")>0){ ni=ni+1 nni=subset(n,number=="X") tabni=subset(tabaggr,number=="X") numberi=vector(length=(nrow(tabni))) for (ini in 1: nrow(tabni)){ inv=tabni[ini,2] s=sum(tabni[,1]==as.character(inv[1])) numberi[ini]=ifelse(s==0,ni,"X") } number[nni]=numberi } numberin=as.data.frame(as.numeric(number)) cori=cbind(tabaggr$IN,numberin);colnames(cori)=c("V","L") #output ni=ni+1 numbero=vector() for (ini in 1: nrow(tabaggr)){ inv=tabaggr[ini,1] s=sum(tabaggr[,2]==as.character(inv[1])) numbero[ini]=ifelse(s==0,ni,"X") } tabao=subset(tabaggr,numbero!="X") lvo=levels(as.factor(as.character(tabao$ON))) nio=rep(ni,length(lvo)) coro=cbind(lvo,nio);colnames(coro)=c("V","L") cor=rbind(cori,coro) cord=matrix(ncol=3,nrow=0);colnames(cord)=c("V","L","y") for(lni in 1:max(cor$L)){ corli=subset(cor,cor$L==lni) yli=nrow(corli)/2 ei=lni*space+1-space sli=seq(from=yli,to=-yli)*ei;sli=sli[1:nrow(corli)]; corlii=cbind(corli,sli);colnames(corlii)=colnames(cord);cord=rbind(cord,corlii) } if (orientation=="LR"){ lmax=as.numeric(max(cord$L))+1 plot(cord$y~cord$L,pch=19,xlim=c(0,lmax),ylab="",xlab="",yaxt="n",xaxt="n",cex=0.8) for (lki in 1: nrow(tabaggr)){ iki=as.character(tabaggr[lki,2]);corki=cord[cord$V==iki,] oki=as.character(tabaggr[lki,1]);corko=cord[cord$V==oki,] ly=ifelse(tabaggr[lki,3]=="MEAN",1,ifelse(tabaggr[lki,3]=="MIN",2,3)) cork=rbind(corki,corko) lines(cork$y~cork$L,lty=ly) if(tabaggr[lki,3]=="MEAN"){ text(corki$L,corki$y,labels=tabaggr[lki,4],adj=c(-0.8,-0.8),cex=0.6) } } cord1=subset(cord,cord$L==1) text(cord1$L,cord1$y,labels=cord1$V,adj=1.1,col=1) cordr1=subset(cord,cord$L!=1) text(cordr1$L,cordr1$y,labels=cordr1$V,adj=c(-0.2,0.6),col=grey(0.5)) legend("bottomright",lty=c(1,2,3),legend=c("MEAN","MIN","MAX"),cex=0.8) } if (orientation=="TD"){ cord$L=-as.numeric(cord$L) lmax=as.numeric(min(cord$L))-1 plot(cord$L~cord$y,pch=19,ylim=c(lmax,0),ylab="",xlab="",yaxt="n",xaxt="n",cex=0.8) for (lki in 1: nrow(tabaggr)){ iki=as.character(tabaggr[lki,2]);corki=cord[cord$V==iki,] oki=as.character(tabaggr[lki,1]);corko=cord[cord$V==oki,] ly=ifelse(tabaggr[lki,3]=="MEAN",1,ifelse(tabaggr[lki,3]=="MIN",2,3)) cork=rbind(corki,corko) lines(cork$L~cork$y,lty=ly) if(tabaggr[lki,3]=="MEAN"){ text(corki$y+0.1,corki$L-0.2,labels=tabaggr[lki,4],adj=c(0,1),cex=0.6) } } cord1=subset(cord,cord$L==-1) text(cord1$y,cord1$L,labels=cord1$V,adj=c(0,0.5),col=1,srt=90,cex=0.8,offset=1) cordr1=subset(cord,cord$L!=-1) text(cordr1$y,cordr1$L,labels=cordr1$V,adj=c(1,1),col=grey(0.5)) legend("bottomright",lty=c(1,2,3),legend=c("MEAN","MIN","MAX"),cex=0.8) } } graphtrans= function(tabtrans){ lv=levels(tabtrans$variable) s=split(tabtrans,tabtrans$variable) datam=as.data.frame(matrix(nrow=100,ncol=length(lv)));colnames(datam)=lv for( sni in 1: length(lv)){ tabs=s[[sni]] if(tabs[1,2]=="QUAN"){ minn=min(tabs$v1) maxn=max(tabs$v2) datam[,sni]=seq(from=minn,to=maxn, length.out = 100) } if(tabs[1,2]=="QUAL"){ nc=levels(tabs$categories) datam[,sni]=as.factor(rep(tabs$categories,length.out=100)) } } datat=trans(data=datam,tabtrans = tabtrans) ng=ncol(datat) nc=ceiling(sqrt(ng)) nr=floor(sqrt(ng)) par(mfrow=c(nc,nr)) par(mar=c(3,3,0.5,0.5)) for(ngi in 1: ng){ Vti=colnames(datat)[ngi] plot(datat[,Vti]~datam[,Vti],ylim=c(-0.1,1.1),ylab="Scores",main=Vti,pch=19,yaxt="n",bty="l") axis(2,at=c(0,0.5,1)) } }