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.4.1. Création et indexation
2.4.2. Un peu de théorie : le type Factor
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.4.1. Création et indexation

Un tableau de données (dataframe) permet de regrouper des vecteurs de même taille, mais pas nécessairement de même type (contrairement aux matrices) :

math anglais russe sexe
1 10 5 15 homme
2 12 13 NA femme
3 5 7 5 femme
4 9 12 NA homme
5 13 5 10 homme
Un tableau de donnees

Il existe de nombreux moyens pour créer ce tableau : en lisant le fichier texte notes.txt (à sauvegarder auparavant sur votre disque dur) avec RCommander (voir écran) ou avec la fonction read.table...

	
# creation avec read.table
setwd("C:/Documents and Settings/raffinat")  # dossier à adapter
tab = read.table("notes.txt",header=T, sep="\t", dec=".")
print(tab)
# creation avec data.frame
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)
print(tab)	

On peut supprimer des colonnes (russe) ou en ajouter (moyenne, avis) :

tab$russe = NULL  # pour supprimer la colonne russe
tab$moyenne = (tab$math + tab$anglais)/2
tab$avis = ifelse(tab$moyenne<10,"recale","admis")
print(tab)

Pour désigner une variable d'un tableau de données, on peut utiliser une notation de liste ($) ou une notation matricielle ([ , ]).

# notations pour désigner une colonne (ici anglais)
tab$anglais
tab[,2]  # on omet l'indice de ligne
tab[,"anglais"]	# indice de colonne remplacé par son nom
# notations pour désigner plusieurs colonnes
tab[,c(1,2)]  # on omet l'indice de ligne
tab[,c("math","anglais")]

Comme pour les matrices, il est possible d'indicer les lignes par des vecteurs booléens. Cela permet d'extraire des sous-ensembles du tableau de données initial, par exemple les données relatives aux femmes.

# selection des donnees relatives aux femmes
femmes = tab[tab$sexe=="femme",]  
	# on omet l'indice de colonne
	# equivaut ici à tab[c(F,T,T,F,F),]
print(femmes)
# moyenne d'anglais des femmes
mean(femmes$anglais,na.rm=T)
mean(tab[tab$sexe=="femme","anglais"],na.rm=T)
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