top of page

CLASSE D'UN OBJET

Sous R, les objets sont regroupés en classes d'objets possédant des propriétés spécifiques.

Il existe 7 principales classes d'objets : vector, factor, list, matrix, data.frame, date et date/heure.

​​Classe vector : regroupe des données (liste de valeurs) de même type (numeric, character, logical ...). La classe vector est la classe par défaut d'un objet.

 

Notes=c(12.3,9.8,14.7,10.5,13.7)  # Type numeric.

Yeux=c("Bleu","Marron","Marron","Bleu","Noir","Marron,"Bleu","Bleu","Vert","Noir") # Type character.

Boursier=c(T,F,TRUE,FALSE,T,F,FALSE,T,TRUE) # Type logical.

Il existe une autre méthode pour rentrer manuellement des données dans un objet de classe vector. Cela se fait avec la fonction scan( ).

 

Nom_Objet=scan()

 

​Après avoir exécuté la ligne de code ci-dessus, vous allez pouvoir rentrer vos données dans la fenêtre Console (en bas à gauche). Après chaque donnée rentrée, il faut appuyer sur la touche entrer. Quand vous avez rentrés toutes vos données, tapez deux fois sur la touche entrer pour valider votre objet et quitter la fonction scan( ).

 

À savoir : il faut utiliser le point à la place de la virgule pour le nombres décimaux. Lorsque vous avez une donnée manquante, il faut entrer NA (Not Available).

Enfin, la fonction c() est aussi une fonction de concaténation de vecteurs. En effet, elle peut de regrouper plusieurs vecteurs en un seul.

Vecteur=c(Notes, Yeux, Boursier) # Regroupe les vecteurs Notes, Yeux et Boursier dans un seul vecteur.

Classe factor : utile pour les objets de type chaîne de caractères présentant des redondances. La classe factor va recoder les chaînes de caractères redondantes en différents entiers. Il y aura autant d'entiers qui y a de modalités / niveaux (chaînes de caractères uniques).

Yeux=c("Bleu","Marron","Marron","Bleu","Noir","Marron,"Bleu","Bleu","Vert","Noir") # Objet de classe vector.

Yeux=factor(Yeux) # Transforme en classe factor.

Ensuite, pour voir les différentes modalités / niveaux dans la console, il faudra utiliser la commande levels( ) .

levels(Yeux) # Les modalités sont Bleu, Marron, Noir et Vert.

Il est aussi possible d'insérer de nouvelles modalités / niveaux dans un objet de classe factor.

Jours=c("Lundi","Jeudi","Lundi","Vendredi","Jeudi","Dimanche","Samedi",Samedi","Lundi")

Jours=factor(Jours)

levels(Jours)=c(levels(Jours),"Mardi","Mercredi") # Ajoute de nouvelles modalités / niveaux à l'objet Jours.

Enfin, pour ordonner les modalités / niveaux d'un objet de classe factor (utile pour une variable qualitative ordinale), on utilise la fonction ordered avec l'option levels dans laquelle on indiquera l'ordre des modalités.

Par défaut les modalités sont ordonnées par ordre alphabétique.

À savoir que l'on n'est pas obligé d'appliquer le type factor avant d'utiliser fonction ordered.

Jours=ordered(Jours,levels=c("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"))

Important :

Il est souvent utile de souvent recoder des données (appliquer un format). Pour cela, on utilise les fonctions levels et labels.

Sexe=c("h","f") 

Sexe=factor(Sexe,levels=c("f","h"),labels=c("Femme","Homme")) # Avec levels, on précise les différentes valeurs du vecteur. Puis avec labels, on précise le format / recodage des valeurs. Attention, vous devez garder le même ordre entre levels et labels.

Classe list : stocke en un seul et même objet des objets de natures / types différents. Par exemple, on peut regrouper dans une liste des objets de classe vector. Attention, cela ne va pas créer un tableau. Cela va juste créer un vecteur (une liste) qui contiendra des objets de classe vector (contenant eux-mêmes des valeurs).

Notes=c(12.3,9.8,14.7,10.5,13.7) 

Yeux=c("Bleu","Marron","Marron","Vert","Noir")

Boursier=c(T,F,TRUE,FALSE,T) 

Liste=list(Notes,Yeux,Boursier) # Crée une liste de classe list qui contient les 3 vecteurs.

Pour atteindre / afficher un objet stocké dans une liste, il suffit de préciser entre crochets le rang de l'objet dans la liste.

Liste[2] # Affiche l'objet Yeux (2ème objet) stocké dans l'objet de classe list nommé Liste.

ou

Liste[[2]] # Même résultat que Liste[2].

Il est souvent plus pratique de travailler avec des noms plutôt qu'avec des rangs / numéros de ligne. Pour cela, il faut nommer les vecteurs présents dans la liste grâce à la fonction names().

names(Liste)=c("Notes","Yeux","Boursier")

Vous pouvez aussi nommer les vecteurs directement lors de la création de la liste.

Liste=list("Notes"=Notes, "Yeux"=Yeux, "Boursier"=Boursier)

Ensuite, pour atteindre / afficher un objet stocké dans la liste (avec des vecteurs renommés), il suffit juste d'indiquer le nom de la liste puis le nom du vecteurs renommé, le tout séparé par le symbole $.

Liste$Yeux # Affiche l'objet Yeux stocké dans l'objet de classe list nommé Liste.

Classe matrix : permet de stocker des données de mêmes types dans un tableau (une matrice).

 

Notes=c(12.3,8.5,10.5,15.1,7.8,12.9,10.6,9.7,16.7,7.3,6.8,12.0)

Tableau=matrix(Notes, nrow=3, byrow=TRUE) # Crée un tableau de classe matrix contenant les valeurs de l'objet Notes et possédant 3 lignes.

 

Paramètres :

nrow : correspond au nombre de lignes.

ncol : correspond au nombre de colonnes.

byrow=TRUE : pour écrire en ligne.

byrow=FALSE : pour écrire en colonne.

 

L’objet Notes est constitué de 12 notes. On rentre ces notes dans un tableau. On souhaite que Rstudio remplisse les notes sur 3 lignes, donc vu qu’il y a 12 notes, il y aura 4 colonnes.

 

Vous l’aurez compris, avant de rentrer les valeurs dans le tableau, il faut savoir quel tableau on veut faire (nombre de ligne et si Rstudio doit remplir les données en ligne ou en colonne).

 

Il est aussi possible de créer une matrice vide dans laquelle on pourra plus tard remplir les colonnes.

matrice=matrix(ncol=5,nrow=10) # Crée une matrice vide de 5 colonnes et de 10 lignes.

Notes=c(12.3,8.5,10.5,15.1,7.8,12.9,10.6,9.7,16.7,7.3)

matrice[,1]=Notes # Rempli la première colonne de la matrice avec les valeurs du vecteur Notes.

matrice[1,]=Notes # Rempli la première ligne de la matrice avec les valeurs du vecteur Notes.

Avec la fonction rownames( ) et colnames( ) on peut renommer les lignes et les colonnes d’un objet de classe matrix. De plus, la fonction

 

rownames(Tableau)=c("Élève 1","Élève 2","Élève 3") # Les 3 lignes correspondent aux 3 élèves.

colnames(Tableau)=c("Note 1","Note 2","Note 3","Note 4") # Les 4 colonnes correspondent aux 4 notes.

 

 

Pour obtenir la dimension (nombre de lignes et colonnes) et les noms des lignes et des colonnes d’un objet de classe matrix, on utilise la fonction attributes( ).

La dimension d’un objet de classe matrix peut également être obtenu via la fonction dim( ).

 

attributes(Tableau)

dim(Tableau)

Enfin, pour naviguer dans un tableau de classe matrix, on utilise la syntaxe suivante :

ObjetMatrix[n,p] # sélectionne la valeur présente sur la ligne n et la colonne p du tableau ObjetMatrix.

ObjetMatrix[n,] # sélectionne toutes les valeurs présentent sur la ligne n du tableau ObjetMatrix.

ObjetMatrix[,p] # sélectionne toutes les valeurs présentent sur la colonne p du tableau ObjetMatrix.

ObjetMatrix[,-p] # sélectionne toutes les valeurs sauf celles présentent sur la colonne p du tableau ObjetMatrix.

ObjetMatrix[c(n1,n2), c(p1,p2)] # sélectionne les valeurs présentent sur les lignes n1 et n2 et les colonnes p1 et p2 du tableau ObjetMatrix.

ObjetMatrix[n1:n2, p1:p2)] # sélectionne toutes les valeurs présentent entre les lignes n1 et n2 et entre les colonnes p1 et p2 du tableau ObjetMatrix.

Classe data.frame : permet de stocker des données de types différents dans un tableau. C’est comme les objets de classe matrix mais avec des données de types différents.

Pour rentrer des données dans un data.frame, il faut rentrer chaque colonne dans un vecteur. Puis, il faut regrouper tous les vecteurs avec la fonction data.frame.

Prénoms=c("Paul","Stéphanie","Jean-Pierre","Thibault"," Simon")

Boursier=c(T,F,F,T,T)

Yeux=c("Bleu","Marron","Marron","Bleu","Noir")

Notes=c(12.3,8.5,10.5,15.1,7.8)

Tableau=data.frame(Prénoms,Boursier,Yeux,Notes) # Crée un tableau de classe data.frame contenant les vecteurs (on peut aussi mettre des data.frames à la place des vecteurs).

 

À la place de rentrer les données manuellement, on peut les obtenir via un fichier de données. Pour rentrer des données d'un fichier dans un data.frame, je te redirige vers ma fiches nommée Importation de fichiers.

Il est aussi possible donner un nom aux colonnes, cela se fait soit à la création du data.frame en indiquant le nom de la colonne puis le nom du vecteur, soit avec la fonction colnames() (voir plus haut).

Tableau=data.frame("Prénoms des élèves"=Prénoms, "Statut boursier"=Boursier, "Couleur des yeux"=Yeux, "Notes à l'examen"=Notes) # Crée un tableau de classe data.frame et nomme les colonnes.

Dans le tableau de classe data.frame, les lignes représentent les individus et les colonnes représentent les variables.

 

 

Comme avec les objet de classe matrix, on peut utiliser la fonction attributes() pour obtenir la dimension (nombre de lignes et colonnes) ainsi que les noms des lignes et des colonnes.

 

attributes(Tableau)

Enfin, pour ce qui est de la navigation dans un objet de classe data.frame c'est la même chose qu'avec un objet de classe matrix (voir ci-dessus le dernier point de la présentation des objets la classe matrix).

Classe date : objet exprimé sous la forme d’une chaîne de caractères.

Sous Rstudio, le format par défaut est yyyy-mm-dd (exemple : 1999-06-24).

Pour créer un objet de type date, on utilise la fonction as.Date( ).

 

Date1=as.Date("1970-01-01") # Crée un objet date qui a pour valeur le 1er janvier 1970.

as.numeric(Date1) # Transforme la date au format numeric (nombre de jours depuis le 1er janvier 1970 (date de référence)).

 

​Attention : il faut bien respecter le format par défaut yyyy-mm-dd.

 

Date2=as.Date("01-01-1970") # Erreur car l’ordre n’est pas bon.

 

Si le format de votre date est différent de celui par défaut, on devra utiliser le paramètre format pour spécifier le format de votre date.

 

Date2=as.Date("01-01-1970",format="%d-%m-%Y") # Spécifie un nouveau format : jour en chiffre-mois en chiffre-année avec 4 chiffres.

Date2=strptime("01/01/19",format="%d/%m/%y") # Même chose que as.Date.

 

​​Ci-après les codes spécifiques à une lecture d'une date :

%a : jour de la semaine abrégé en lettres (ex : dim.)

%A : jour de la semaine complet en lettres (ex : dimanche)

%w : jour de la semaine en chiffres (ex pour dimanche : 0)

%d : date en chiffres (ex : 14)

 

%b : mois abrégé en lettres (ex : janv.)

%B : mois complet en lettres (ex : janvier)

%m : mois en chiffres (ex : 01)

 

%y : année avec 2 chiffres (ex : 99)

%Y : année avec 4 chiffres (ex : 1999)

 

On peut aussi modifier les délimiteurs de jour, mois et année.

Exemple pour bien comprendre les délimiteurs et les codes :

 

Date3=as.Date("9,juil. 1982", format="%d,%b %y")

 

 

On va maintenant voir comment créer une date à partir d’un nombre de jours. Il ne faut pas oublier l’origine de la date (date à partir de laquelle on compte le nombre de jours).

 

Date4=as.Date(-11080,origin="1970-01-01")

format(Date4,format="%d %B %Y") # On affiche avec un format spécifique.

Vous l'aurez compris, pour recoder / changer le format d'une date, il faudra utiliser la fonction format.

Enfin, on peut utiliser la fonction difftime() pour calculer la différence (durée) entre deux dates.

difftime(DateAncienne, DateRécente)

Classe date/heure : objet exprimé sous la forme d’une chaîne de caractères comprenant une date et une heure.

Sous Rstudio, le format par défaut est yyyy-mm-dd hh:mm:ss (exemple : 1999-06-24 12:59:05).

Pour créer un objet de type date/heure, on utilise la fonction as.POSOXTct( ).

 

Time1=as.POSIXct("1970-01-01 00:00:00",tz="UTC") # tz correspond à la zone du fuseau horaire.

as.numeric(Time1) # Transforme la date/heure au format numeric (nombre de secondes depuis le 1er janvier 1970).

 

 

Comme avec les objet de classe date, on peut spécifier un autre format de date/heure que celui par défaut, on devra alors utiliser le paramètre format.

 

Time2=as.POSIXct("12:47:00 / févr. 2003",fomat="%H:%M:%S / %b %Y")

format(Time3,format="%H|%M : %d") # On modifie le format d'affichage de la date/heure nommée Time3.

​Ci-après les codes spécifiques à une lecture d'une heure  :

%h : heure au format 12 h (ex : 2)

%H : heure au format 24 h (ex : 14)

%M : minutes en chiffres (ex : 58)

%S : secondes en chiffres (ex : 58)

 

Pour finir, on va voir comment créer une date/heure à partir d’un nombre de secondes. Il ne faut pas oublier l’origine de la date/heure (date à partir de laquelle on compte le nombre de secondes).

 

Time4=as.POSIXct(35565582,origin="2000-01-01")

bottom of page