J'ai pondu un petit script R qui a partir d'une variable ecrit le code LaTeX correspondant à une analyse univarié. Rien de génial ou révolutionnaire, mais c'est bien pratique surtout si on a beaucoup de variables et qu'on veut faire une analyse univarié rapide
Si ca peut servir a d'autres utilisateurs de LaTeX...
Code : Tout sélectionner
latexUnivarie <- function(vari,namesVar,r01,nomFich,typeVar){
if(typeVar=="N"){latexUnivarieNominale(vari,namesVar,r01,nomFich)}
if(typeVar=="O"){latexUnivarieOrdonnee(vari,namesVar,r01,nomFich)}
if(typeVar=="D"){latexUnivarieDiscrete(vari,namesVar,r01,nomFich)}
if(typeVar=="C"){latexUnivarieContinue(vari,namesVar,r01,nomFich)}
}
latexUnivarieNominale <- function(vari,namesVar,r01,nomFich){
latexUnivarieQualitative(vari,namesVar,r01,nomFich,"Nominale")
}
latexUnivarieOrdonnee <- function(vari,namesVar,r01,nomFich){
latexUnivarieQualitative(vari,namesVar,r01,nomFich,"Ordonnee")
}
latexUnivarieQualitative <- function(vari,namesVar,r01,nomFich,typeVar){
cat("\\begin{table}[H]\n",file=nomFich,append=TRUE)
cat(" \\begin{center}\n",file=nomFich,append=TRUE)
cat(" \\addtolength{\\leftskip}{-4cm}\\addtolength{\\rightskip}{-4cm}\n",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{|l|c|cc|c|} \\hline\n",file=nomFich,append=TRUE)
cat(" {\\bf Variable} & {\\bf Effectif} & {\\bf Camembert} & {\\bf Histogramme} & {\\bf NA} \\\\ \\hline\n",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{@{}l@{}}\\vari{",namesVar,"}\\\\",typeVar,"\\end{tabular} & \n",sep="",file=nomFich,append=TRUE)
tableVar <- table(vari)
sommeVar <- sum(tableVar)
cat(" \\begin{tabular}{@{}l@{ : }lr@{}}\n",file=nomFich,append=TRUE);
for(i in 1:nrow(tableVar)){
cat(" ",labels(tableVar[i]),"&",tableVar[i][[1]],"&(",file=nomFich,append=TRUE)
cat(format(tableVar[i][[1]]/sommeVar*100,digits=3),file=nomFich,append=TRUE)
cat("\\%) \\\\\n",file=nomFich,append=TRUE)
}
cat(" \\end{tabular} &\n",file=nomFich,append=TRUE)
nomPScam <- paste("./Graph/",r01,"-",namesVar,"-cam.eps",sep="")
postscript(file=nomPScam,horizontal=FALSE,width=4,height=4)
pie(tableVar)
dev.off()
nomPShist <- paste("./Graph/",r01,"-",namesVar,"-hist.eps",sep="")
postscript(file=nomPShist,horizontal=FALSE,width=6,height=6)
barplot(tableVar)
dev.off()
cat(" \\begin{tabular}{@{}l@{}}\\epsfig{figure=",nomPScam,",width=4cm}\\end{tabular} &\n",sep="",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{@{}l@{}}\\epsfig{figure=",nomPShist,",width=3cm}\\end{tabular} &\n",sep="",file=nomFich,append=TRUE)
cat(" ",file=nomFich,append=TRUE)
cat(sum(is.na(vari)),file=nomFich,append=TRUE)
cat(" \\\\ \\hline \n",file=nomFich,append=TRUE)
cat(" \\end{tabular}\n",file=nomFich,append=TRUE)
cat(" \\caption{Analyse univarié, \\vari{",namesVar,"}}\n",sep="",file=nomFich,append=TRUE)
cat(" \\end{center}\n",file=nomFich,append=TRUE)
cat("\\end{table}\n\n",file=nomFich,append=TRUE)
}
### Discrete
latexUnivarieDiscrete <- function(vari,namesVar,r01,nomFich){
cat("\\begin{table}[H]\n",file=nomFich,append=TRUE)
cat(" \\begin{center}\n",file=nomFich,append=TRUE)
cat(" \\addtolength{\\leftskip}{-4cm}\\addtolength{\\rightskip}{-4cm}\n",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{|l|c|cc|c|} \\hline\n",file=nomFich,append=TRUE)
cat(" {\\bf Variable} & {\\bf Indices} & {\\bf BoxPlot} & {\\bf Histogramme} & {\\bf NA} \\\\ \\hline\n",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{@{}l@{}}\\vari{",namesVar,"}\\\\ Discrete \\end{tabular} & \n",sep="",file=nomFich,append=TRUE)
quartileVar <- summary(vari)
cat(" \\begin{tabular}{@{}l@{ : }l@{}}\n",file=nomFich,append=TRUE);
cat(" Min. &",quartileVar[1][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Q1 &",quartileVar[2][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Méd. &",quartileVar[3][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Q3 &",quartileVar[5][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Max. &",quartileVar[6][[1]],"\\\\ \\hline\n",file=nomFich,append=TRUE)
cat(" Moy &",quartileVar[4][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Ecart &",sd(na.omit(vari)),"\\\\\n",file=nomFich,append=TRUE)
cat(" \\end{tabular} &\n",file=nomFich,append=TRUE)
nomPSbox <- paste("./Graph/",r01,"-",namesVar,"-box.eps",sep="")
postscript(file=nomPSbox,horizontal=FALSE,width=4,height=8)
boxplot(vari)
dev.off()
nomPShist <- paste("./Graph/",r01,"-",namesVar,"-hist.eps",sep="")
postscript(file=nomPShist,horizontal=FALSE,width=6,height=6)
plot(table(vari))
dev.off()
cat(" \\begin{tabular}{@{}l@{}}\\epsfig{figure=",nomPSbox,",width=2cm}\\end{tabular} &\n",sep="",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{@{}l@{}}\\epsfig{figure=",nomPShist,",width=3cm}\\end{tabular} &\n",sep="",file=nomFich,append=TRUE)
cat(" ",file=nomFich,append=TRUE)
cat(sum(is.na(vari)),file=nomFich,append=TRUE)
cat(" \\\\ \\hline \n",file=nomFich,append=TRUE)
cat(" \\end{tabular}\n",file=nomFich,append=TRUE)
cat(" \\caption{Analyse univarié, \\vari{",namesVar,"}}\n",sep="",file=nomFich,append=TRUE)
cat(" \\end{center}\n",file=nomFich,append=TRUE)
cat("\\end{table}\n\n",file=nomFich,append=TRUE)
}
latexUnivarieContinue <- function(vari,namesVar,r01,nomFich){
cat("\\begin{table}[H]\n",file=nomFich,append=TRUE)
cat(" \\begin{center}\n",file=nomFich,append=TRUE)
cat(" \\addtolength{\\leftskip}{-4cm}\\addtolength{\\rightskip}{-4cm}\n",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{|l|c|cc|c|} \\hline\n",file=nomFich,append=TRUE)
cat(" {\\bf Variable} & {\\bf Indices} & {\\bf BoxPlot} & {\\bf Histogramme} & {\\bf NA} \\\\ \\hline\n",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{@{}l@{}}\\vari{",namesVar,"}\\\\ Continue \\end{tabular} & \n",sep="",file=nomFich,append=TRUE)
quartileVar <- summary(vari)
cat(" \\begin{tabular}{@{}l@{ : }l@{}}\n",file=nomFich,append=TRUE);
cat(" Min. &",quartileVar[1][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Q1 &",quartileVar[2][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Méd. &",quartileVar[3][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Q3 &",quartileVar[5][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Max. &",quartileVar[6][[1]],"\\\\ \\hline\n",file=nomFich,append=TRUE)
cat(" Moy &",quartileVar[4][[1]],"\\\\\n",file=nomFich,append=TRUE)
cat(" Ecart &",sd(na.omit(vari)),"\\\\\n",file=nomFich,append=TRUE)
cat(" \\end{tabular} &\n",file=nomFich,append=TRUE)
nomPSbox <- paste("./Graph/",r01,"-",namesVar,"-box.eps",sep="")
postscript(file=nomPSbox,horizontal=FALSE,width=4,height=8)
boxplot(vari)
dev.off()
nomPShist <- paste("./Graph/",r01,"-",namesVar,"-hist.eps",sep="")
postscript(file=nomPShist,horizontal=FALSE,width=6,height=6)
hist(vari,col="grey")
dev.off()
cat(" \\begin{tabular}{@{}l@{}}\\epsfig{figure=",nomPSbox,",width=2cm}\\end{tabular} &\n",sep="",file=nomFich,append=TRUE)
cat(" \\begin{tabular}{@{}l@{}}\\epsfig{figure=",nomPShist,",width=3cm}\\end{tabular} &\n",sep="",file=nomFich,append=TRUE)
cat(" ",file=nomFich,append=TRUE)
cat(sum(is.na(vari)),file=nomFich,append=TRUE)
cat(" \\\\ \\hline \n",file=nomFich,append=TRUE)
cat(" \\end{tabular}\n",file=nomFich,append=TRUE)
cat(" \\caption{Analyse univarié, \\vari{",namesVar,"}}\n",sep="",file=nomFich,append=TRUE)
cat(" \\end{center}\n",file=nomFich,append=TRUE)
cat("\\end{table}\n\n",file=nomFich,append=TRUE)
}
Les arguments sont :
* qu1 : nom de la variable
* "Question 1" : Nom qui sera affiché sous la table
* "Graph" : prefixe donné aux fichiers graphiques eps
* "univarie.tex" : nom du fichier a inclure dans votre fichier main.tex
* "O" : type de la variable. Les 4 types sont N (nominale), O (ordonné), D (discrete), C (continue)
Code : Tout sélectionner
latexUnivarie(qu1,"Question 1","Graph","univarie.tex","O")
Pour une utilisation "a la chaine" sur un data.frame Dn, je commence par creer un tableau varType qui contient le type de chaque variable. Puis :
Code : Tout sélectionner
for (i in ncol(Dn){
latexUnivarie(qu1,names(Dn)[i],"Graph","univarie.tex",varType[i])
}
Toute l'analyse sera dans le fichier univarie.tex
attention, chaque instruction latexUnivarie ajoute du code au fichier univarie.tex. Si vous executez plusieur fois votre code, il est important de netoyer le fichier, par une ligne
cat("% **************\n",file="univarie.tex")
Je ne suis pas sur d'avoir posté au bon endroit... Dans le doute, je poste sur le plus général