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))
}