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 de (gH)