Interfaces utilisateur et rapports statistiques avec R et Sas
Introduction
Chapitre 1. Environnement de travail
Chapitre 2. Le langage R
2.1. Vecteurs
2.2. Matrices
2.3. Listes
2.4. Tableaux de données
2.5. Fonctions personnalisées
2.6. Exercices
Chapitre 3. Rapports statistiques
Chapitre 4. Interfaces utilisateur
Chapitre 5. Bases de données et langage Sql
Annexe A : une applette Java
Annexe B : le logiciel Sas
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module

2.5. Fonctions personnalisées

Le langage de commandes n'exige pas de compétences particulières en programmation. Mais il serait dommage de s'en tenir là sans faire une petite incursion dans ce domaine pour voir ce que la programmation peut apporter, en étudiant deux cas pratiques : la création de rapports (rudimentaires pour l'instant) et le calcul de nouvelles variables (moyenne, avis...).

Dans un premier temps, je vous demande de télécharger le fichier automatiser.R, qui contient la définition des nouvelles fonctions, puis de le sauvegarder sur votre disque dur. Ensuite, après avoir exécuté le contenu de ce fichier (commande sourcer du code R), vous pouvez tester les nouvelles fonctions :

# creation du tableau de donnees
sexe = c("homme","femme","femme","homme","homme")
math = c(10,12,5,9,13)
anglais = c(5,13,7,12,5)
russe = c(15,NA,5,NA,10)
tab = data.frame(math,anglais,russe,sexe)
# rapports
rapport(var=tab$math, titre="mathematiques")
rapport(titre="sexe", var=tab$sexe)  # ordre des parametres peu important
# nouvelles variables
tab$moyenne = moyenne(math=tab$math, ang=tab$anglais, russe=tab$russe)
rapport(var=tab$moyenne,titre="note finale")
tab$avis = avis(notes=tab$moyenne)
rapport(var=tab$avis,titre="avis")

Jetons maintenant un coup d'oeil à la fonction rapport. Cette fonction dépend de 2 paramètres formels nommés var et titre. Elle fait un rapport dépendant du type de la variable : quantitative ou qualitative. Si la variable est quantitative, sa moyenne et son écart-type sont calculés, puis une boîte à moustaches est affichée. Si la variable est qualitative, les effectifs par modalité sont calculés, puis un graphe en camembert est affiché.

rapport = function(var,titre) {
	if (is.numeric(var)) {  # variable quantitative
		print(titre)
		print( paste("moyenne : ", mean(var,na.rm=T)) )
		print( paste("ecart type : ", sd(var,na.rm=T)) )
		boxplot(var,main=titre)
	} else {  # variable qualitative
		print(titre)
		print(table(var))
		pie(table(var),main=titre)
	}
}

La fonction moyenne dépend de 3 paramètres formels : math (coefficient 3), ang (coefficient 2) et russe (épreuve facultative, coefficient 1). Pour le russe, seuls les points au dessus de 10 sont pris en compte :

moyenne = function(math,ang,russe) {
	sansRusse = (3*math + 2*ang) / 5
	avecRusse = (3*math + 2*ang + ifelse(russe<=10,0,russe-10)) / 5
	notes = ifelse(is.na(russe), sansRusse, avecRusse)
	return(notes)
}

La fonction avis dépend de 1 paramètre formel : notes. Pour l'avis, il y a 3 possibilités : non (de 0 à 8 exclu), oral (de 8 inclus à 10 exclu), oui (à partir de 10). Le vecteur avis est transformé en Factor pour, entre autres, éviter un problème avec RCommander (voir section un peu de théorie) :

avis = function(notes) {
	avis = ifelse(notes<8,"non", ifelse(notes<10,"oral","oui") )
	# ou avis=cut(notes,breaks=c(0,8,10,20),labels=c("non","oral","oui"))
	return (as.factor(avis))
}
Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module