Valid XHTML     Valid CSS2    

Introduction à la programmation R (exercices)

Séance de révision numéro 1

                     gilles.hunault "at" univ-angers.fr

 

Calculs de moyennes et de médianes en colonnes

Pour les fameuses données iris, afficher puis exporter sous Excel les moyennes et les médianes des 4 premières colonnes de données. Voici ce qu'on devrait obtenir :


             Sepal.Length Sepal.Width Petal.Length Petal.Width
     moyenne     5.843333    3.057333        3.758    1.199333
     médiane     5.800000    3.000000        4.350    1.300000
     
     export des données dans moymediris.csv effectué
     

On n'utilisera bien sûr que des affectations.

Solution

Le chargement des données se fait avec data("iris"). Avec ce que nous avons appris, le plus simple est de prévoir une matrice pour stocker les résultats en ligne : la ligne 1 pour les moyennes et la ligne 2 pour les médianes. On peut alors pour chaque colonne stocker la moyenne et la médiane à la même position de colonne. Il ne reste plus ensuite qu'à nommer les lignes et les colonnes du tableau résultat pour obtenir l'affichage souhaité, soit le code :


     ## moyennes et médianes des fameuses données iris
     
     data(iris)                         # chargement des données
     matRes <- matrix(NA,nrow=2,ncol=4) # tableau des résultats
     
     # remplissage "manuel" des moyennes et des médianes
     
     matRes[1,1] <- mean(iris[,1])
     matRes[1,2] <- mean(iris[,2])
     matRes[1,3] <- mean(iris[,3])
     matRes[1,4] <- mean(iris[,4])
     
     matRes[2,1] <- median(iris[,1])
     matRes[2,2] <- median(iris[,2])
     matRes[2,3] <- median(iris[,3])
     matRes[2,4] <- median(iris[,4])
     
     # nommage des lignes et des colonnes
     
     row.names(matRes) <- c("moyenne","médiane")
     colnames(matRes)  <- names(iris)[1:4]
     
     # affichage et export
     
     print(matRes)
     nomCsv <- "moymediris.csv"
     write.csv(x=matRes,file=nomCsv)
     cat("\nexport des données dans",nomCsv,"effectué\n")
     

Il est fastidieux de calculer toutes les moyennes en énumérant chaque colonne. Heureusement R met à notre disposition la fonction colMeans() et on peut donc remplacer les 4 affectations de moyennes par une seule instruction. Malheureusement R n'a pas de fonction colMedians() mais nous verrons un peu plus tard qu'à l'aide de la fonction apply() on peut "appliquer" la fonction médiane aux colonnes. Voici donc le "vrai" code R pour répondre à l'exercice :


     ## moyennes et médianes des fameuses données iris
     
     data(iris)                         # chargement des données
     matRes <- matrix(NA,nrow=2,ncol=4) # tableau des résultats
     col1a4 <- 1:4                      # numéros des colonnes
     
     # nommage des lignes et des colonnes des résultats
     
     row.names(matRes) <- c("moyenne","médiane")
     colnames(matRes)  <- names(iris)[col1a4]
     
     # calcul des moyennes
     
     matRes[1,] <- colMeans(iris[,col1a4])
     
     # calcul des médianes
     
     matRes[2,] <- sapply(F=median,X=iris[,col1a4])
     
     # affichage et export
     
     print(matRes)
     nomCsv <- "moymediris.csv"
     write.csv(x=matRes,file=nomCsv)
     cat("\n")
     cat("export des données dans",nomCsv,"effectué")
     cat("\n")
     

 

Retour à la page principale du cours.

 

 

retour gH    Retour à la page principale de   (gH)