Vous êtes sur la page 1sur 14

Les objets

es informations que l’utilisateur souhaite traiter sont contenues dans des objets. Ces
derniers, identifiés par un nom, peuvent avoir des caractéristiques très différentes et être
manipulés de manière à fournir l’information souhaitée par l’utilisateur. L’objectif de cet E-
thème est de vous familiariser avec les différents types d’objets, mais aussi avec leur
gestion et leur manipulation.
Avant de commencer, vous devez effectuer les opérations suivantes afin de disposer de tout
les éléments nécessaires à l’apprentissage de cet E-thème.
1. Créer un dossier propre à cet E-thème. Ce dossier servira à stocker les données et/ou les
résultats manipulés durant une session de travail.
2. Dans ce dossier, placer le fichier donnees.txt . Il contient la définition des jeux de
données utilisés au cours de cet E-thème.
3. Lancer R.
4. Indiquer le répertoire (Cette démarche s’effectue avec la commande setwd. Par exemple,
si votre répertoire se trouve à l’adresse "C:/etheme2/donnes/", la commande pour diriger R
vers ce répertoire est setwd("C:/etheme2/donnes/")). dans lequel vous allez travailler. La
gestion de l’espace de travail sera approfondie un peu plus loin.
5. Charger les données : source("donnees.txt").

1 - Typologie des objets

es objets sont identifiés par un nom, choisi par l’utilisateur. Ce nom peut contenir
seulement des lettres, des chiffres et des points (utiles si l’on souhaite donner un nom
composé).

Il existe plusieurs types d’objets

les fonctions : function


les listes : list
les matrices : matrix
les séries chronologiques : ts
les structures de données : data frame
les tableaux : array
les vecteurs : vector

Tous ne sont pas de la même utilité. Aussi, au cours de cet E-thème, nous ne traiterons que
des plus importants pour la manipulation de données, à savoir les listes, les matrices, les
vecteurs et les structures de données. Les fonctions, de par leur importance et leur
singularité, feront l’objet d’un E-thème spécifique.
Enfin, avant de présenter ces différents types, et pour être complet, il faut noter que deux
objets de même type peuvent se différencier par leur mode. Le mode d’un objet décrit son
contenu.
Les différents modes sont

caractère : character
complexe : complex
logique : logical
non défini : NULL
numérique : numeric

Le mode d’un objet est obtenu avec la commande attributes(). Il est possible, si cela a un
sens, d’attribuer un mode à un objet par la commande as.x (où x représente le mode
souhaité : as.vector(objet) par exemple). Pour vérifier le résultat, la commande is.x peut
être utilisée (is.vector(objet) par exemple). Elle a pour résultat un booléen (TRUE ou
FALSE).

1.1 - Les vecteurs


1.1.1 - Présentation

es vecteurs peuvent contenir tout type (au sens du mode)de valeurs. Ils sont
généralement construits à partir de la fonction collecteur c().
a.num<-c(1,3,5,6,8) donnera un vecteur numerique alors que a.car<-
c("AUREVILLE","AUSSONNE", "AUZEVILLE-TOLOSANE", "AUZIELLE") donnera un vecteur
de caractère.
Dans la plupart des cas, ils sont utilisés pour stocker les observations d’une variable.
Lorsque celle-ci est qualitative (les modalités pouvant être des nombres), elle sera souvent
utilisée comme facteur et il peut donc être intéressant de le signaler. Ceci peut être fait de
2 manières à partir d’un vecteur qualitatif x avec les fonctions as.factor(x) et factor(x).
L’avantage de la seconde est qu’elle dispose des options levels et labels permettant à
l’utilisateur de pouvoir préciser respectivement les différents niveaux de x (classés par ordre
alphabétique) et les labels correspondants. Elle est donc très pratique pour effectuer un
regroupement de modalités.
Plusieurs fonctions ou symbole sont prévues pour construire un vecteur ayant une forme
particulière.

Les principaux sont


rep(2,10) construit un vecteur contenant 10 fois le nombre 2.
1:n construit la suite de 1 à n.
seq(1:n,by=2) construit lasuite de 1 à n avec un pas de 2.
letters construit l’alphabet.
rnorm(10,0,1) construit un vecteur de 10 observations issues d’une N(0,1).
sample(rnorm(100,0,1),10) extrait un vecteur de 10 observations d’un échantillon
de 100.

Notez qu’ils peuvent être "imbriqués" les uns aux autres.


c(rep(2,5),1:4,rnorm(3,0,1),letters[1:3])

1.1.2 - Manipulation des vecteurs

1.1.2.1 - Informations sur les vecteurs

lusieurs fonctions permettent d’obtenir des informations sur un vecteur, informations qui
peuvent concerner ses attributs comme son contenu en lui-même.
Une première série de fonctions concerne les attributs du vecteur.
mode(x) permet d’obtenir le type d’un vecteur (qualitatif ou quantitatif)
length(x) permet d’obtenir sa longeur
names(x) fournit, s’il existe, le nom des éléments d’un vecteur
On obtient l’ensemble des valeurs prises par un vecteur par unique(x)
is.na(x) indique quels sont les éléments du vecteur x qui sont manquants au moyen
des booléens TRUE (manquant) et FALSE (non manquant).

Concernant le contenu d’un vecteur, les fonctions permettant d’en obtenir des informations
ne sont pas les mêmes selon qu’il s’agisse d’une variable qualitative ou quantitative. Une des
seules exceptions est peut être la fonction summary qui donne la ventilation des individus
entre les différentes modalités dans le premier cas, et les principaux quantiles dans le
second.
En ce qui concerne les variables qualitatives, la fonction la plus utile et la fonction levels,
qui fournit les différentes modalités du vecteur. Essayez par exemple avec le vecteur
x.qual<-as.factor(sample(c("petit","moyen","grand"),60,replace=T)).

our les variables qualitatives, les fonctions sont plus nombreuses. Prenons l’exemple du
vecteur x.quant<-rnorm(60,100,20), vecteur de longeur 60, issu d’une N(100,20).
La moyenne est obtenue par la commande mean(x.quant)
La somme est obtenue par la commande sum(x.quant)
La médiane est obtenue par la commande median(x.quant)
L’écart-type (resp. variance) est obtenu par la commande sd(x.quant) (resp.
var(x.quant))
Le minimum (resp. maximum) est obtenu par la commande min(x.quant) (resp.
max(x.quant))
Le quantile d’ordre Q (0 < Q < 1) est obtenu par la commande quantile(x.quant,Q)

1.1.2.2 - Les opérations élémentaires


outes les opérations élémentaires (+,-,*,/) peuvent être appliquées sur les vecteurs
(numériques). Les opérations sont alors effectuées élément par élément. Prenons l’exemple
des vecteurs x (1,0,1,1,1) et y (1,1,0,0,1).

x<-c(1,0,1,1,1)

y<-c(1,1,0,0,1)

La commande z<- 2*x + 3*y - x*y + 1 affecte au nouvel objet z le vecteur (de longueur
5)

2 +3 +

1.1.2.3 - L’extraction d’un sous-ensemble

n sous-ensemble d’un vecteur peut être extrait en plaçant entre crochets un vecteur
contenant les indices correspondant aux valeurs que l’on souhaite garder.
On peut par exemple extraire les 1er, 2ème, 4ème et 6ème valeurs du vecteur x (1 2 3 4 5
6) par la commande x[c(1:2,4,6)]. A l’inverse, il est possible d’exclure ces mêmes valeurs
en plaçant le signe "-" avant le vecteur d’indices : x[-c(1:2,4,6)].
On peut également vouloir extraire d’un vecteur des éléments ayant une certaine
caractéristique. Dans ces conditions, le procédé est le même en substituant le vecteur
d’indice par une condition (employant les opérateurs logiques "<=", "==", " !=" et ">=").
Prenons les vecteurs x (1,5,3,6,4,7,2,1) et y (oui,non,oui,oui,non,non,oui,oui). On extrait du
vecteur x les valeurs inférieures ou égales à 3 par la commande x[x<=3] et les valeurs
égales à oui de y par y[y=="oui"].

1.1.2.4 - Modification de vecteurs

’autres fonctions permettent de réorganiser un vecteur.


sort classe les éléments par ordre croissant.
sample génère un nouvel échantillon à partir des éléments du vecteur.
1.2 - Les matrices

1.2.1 - Présentation

es matrices sont les objets permettant de stocker des matrices. Les données à l’intérieur
peuvent être de tout type, mais celui-ci doit être le même. En règle générale, elles sont
surtout utiles pour contenir des variables quantitatives, chaque vecteur ligne donnant les
observations d’un individu sur ces variables.
Une matrice se construit à l’aide de la fonction matrix (ou as.matrix(x)), à partir du
vecteur x contenant les données.

Par exemple, la matrice se construit par la commande

X<-matrix(c(1,2,3,4,5,6),ncol=3,byrow=T)

1.2.2 - Manipulation des matrices

ors de ce paragraphe, les exemples donnés seront basés sur l’utilisation des matrices

EXERCICE :

ENONCE :
Un premier exercice va consister à les construire. CORRECTION :

A et B peuvent être construites par

A<-matrix(c(1,0,1,3,2,1),ncol=3,byrow=T)

B<-matrix(c(1,2,3,0,1,2),ncol=2,byrow=F)

Notez au passage l’utilisation de l’argument byrow pour préciser le sens de construction de


la matrice.
1.2.2.1 - Informations sur les caractéristiques d’une matrice

es principales caractéristiques d’une matrice, la matrice A en ce qui nous concerne, sont


données par :
dim(A) dimension de A (nombre de lignes, nombre de colonnes). Ces 2 informations
peuvent être obtenues séparément par les commandes nrow(A) et ncol(A).
rownames(A) et colnames(A) nom des lignes et des colonnes de A. Par défaut ces
dernièrs ne sont pas renseignés. Cela peut se faire par les commandes rownames(A)<-
c("indiv1","indiv2") et colnames(A)<-paste("V",1:3,sep="")

1.2.2.2 - Les opérations élémentaires

es opérateurs élémentaires +, -, * et / réalisent les opérations terme à terme, sous


réserve que les 2 matrices soient de la même dimension. Il est par contre possible
d’effectuer une opération entre un scalaire et une matrice. A l’instar de ce que nous avons
vu pour les vecteurs, la commande 1 + 2*A effectuera la somme des matrices

Pour le produit de matrice, il faut utiliser l’opérateur %*%, toujours sous réserve de
l’adéquation des dimensions (dans notre exemple, cela donne A%*%B).

1.2.2.3 - L’extraction d’un sous-ensemble

ous avons vu que l’on pouvait extraire d’un vecteur quelques éléments. Pour les
matrices, l’opération est identiques, à la différence près que l’on doit indiquer entre crochet
les individus et les variables à retenir.
Par exemple, les observations de la 2ème et de la 3ème variable contenues dans la matrice
A pour le 2ème individu sont données par A[2,c(2,3)]. Si l’on souhaite garder une ligne ou
une colonne entière, il suffit de laisser vide l’espace des colonnes ou des lignes. La deuxième
variable de la matrice A est obtenue par la commande A[,2].

1.2.2.4 - L’extraction d’informations

ous avons vu qu’une matrice servait souvent à stocker les observations sur des
individus de plusieurs variables. Il est donc intéressant de savoir extraire des informations
sur chacune des colonnes. Par ailleurs, les fonctions traditionnelles (sum, sd, mean, etc)
considèrent une matrice de dimension (n,p) comme un vecteur de longueur n*p. Aussi, pour
obtenir des informations sur chacune des colonnes, il est nécessaire d’utiliser la fonction
apply.
Par exemple la somme des colonnes de la matrice A peut être effectuée par la commande
apply(A,2,sum). Le premier argument correspond au nom de la matrice, le second au type
de calcul (calcul par ligne : 1 -calcul par colonne : 2) et le dernier à la fonction à appliquer.

1.2.2.5 - Autres fonctions relatives aux matrices

es fonctions ci-dessous sont très souvent utilisées lorsque l’on manipule des matrices.
t(A) Transposé de la matrice A.
solve(A%*%B) Matrice inverse du produit AB.
diag(A%*%B) Diagonale de la matrice produit de A et de B (afin que l’argument soit
une matrice carrée).
cbind et rbind Concaténation (verticale et horizontale) de matrices.

1.3 - Les listes

es listes sont des ensembles ordonnés d’objets de tout type (vecteur, matrice, ... et
même liste).
Ainsi, l’objet ex.liste ci-dessous a pour composant :
1. nom Nom de la personne (chaine de caractères)
2. prenom Prénom de la personne (chaine de caractères)
3. age Age de la personne (scalaire)
4. note Résultats des 5 contrôles de Data Mining, Credit Scoring et Sondages (matrice)

Cet exemple, comme toutes les listes, est construit à l’aide de la fonction list.

note<-matrix(c(5,6,4,11,9,10,12,8,9,11,7,8,6,8,7),ncol=3)

colnames(note)<-c("DataMining","Scoring","Sondages")

row.names(note)<-1:5

ex.liste<-list(nom="Tergal",prenom="Jean-Claude",age="23",note=note)

Le contenu obtenu est :

> ex.liste
$nom
[1] "Tergal"
$prenom
[1] "Jean-Claude"
$age
[1] "23"
$note
DataMining Scoring Sondages
1 5 10 7
2 6 12 8
3 4 8 6
4 11 9 8
5 9 11 7

Les différents composants de cet objet ont chacun un nom (comme c’est le cas ici) ou sont
indiçés à l’aide de double crochets (le premier élément serait indiçés par [[1]]). Pour
pouvoir accéder à l’un des éléments directement, le signe $est utilisé. Par exemple,
ex.liste$note contient la matrice des notes.
Les deux principales caractéristiques d’un objet de type list sont sa longueur (obtenue par
length(ex.liste)) et le nom de ses composants (names(ex.liste)). De nouveaux
éléments peuvent être rajoutés à l’aide du symbole $. Dans notre exemple, on peut rajouter
le composant origine, indiquant l’origine de l’élève, avec l’instruction

ex.liste$origine<-"Ronchin"

De par sa nature, un objet de type list est donc idéal pour stocker des informations de
différente nature sur un individu, un phénomène, ... Il sera notamment très utile pour
stocker les résultats lors de la construction d’une fonction (dont nous verrons les grands
principes lors de l’E-thème suivant).

1.4 - Les data-frames

1.4.1 - Présentation

es data.frames (ou structure de données) sont les objets les plus importants dans R. Ce
sont des tableaux dont les colonnes, àl’inverse des matrices, peuvent être de différents
types. Cela permet donc de pouvoir disposer, dans un seul objet, des observations sur de
nombreux individus de variables quantitatives et qualitatives, formes habituelles d’un jeu de
données.

La construction d’une data frame peut se faire en contraignant un objet à devenir une
structure de données (avec as.data.frame)ou, ce qui est plus rare, en la construisant
directement avec la fonction data.frame. Mais la plupart du temps les data frames
proviennent de l’importation d’un jeu de données (voir le paragraphe Importation et
Exportation de données).
Si l’on considère les vecteurs V1<-1:10, V2<-1:10/3 et V3<-letters[1:10], on peut faire
une data frame de la concaténation horizontale de ces 3vecteurs par l’instruction
data.frame(V1,V2,V3).
Si l’on considère maintenant la matrice A<-matrix(c(V1,V2,V3),ncol=3), qui ne contient
que des chaines de caractères étant donnée la présence du vecteur V3, l’instruction A<-
as.data.frame(A) en fait une structure de données.

1.4.2 - Extraction d’informations d’une data frame

out comme pour les matrices, un certain nombre de fonctions permettent de connaitre
certaines propriétés d’une data frame. En soumettant le fichier donnees.txt au tout début de
l’E-thème, vous avez chargé la structure de données "df". C’est sur cette dernière que l’on
va travailler maintenant.
les fonctions nrow(df) et ncol(df) permettent d’obtenir respectivement le nombre de
lignes et de colonnes.
names(df) et row.names(df) fournissent le nom des variables en colonnes et des
identificateurs d’individus en ligne.
Il est également possible d’obtenir des informations sur les variables contenues dans la
structure de données avec la fonction summary. Ainsi,
summary(df) donne la distribution des variables quantitatives et la répartition par modalité
des variables qualitatives.

1.4.3 - Manipulation d’une data frame

l’inverse d’une matrice, on ne peut pas effectuer d’opération sur une data frame. Par
contre, on peut en extraire certaines variables, comme pour les matrices par le symbole $
ou par les crochets. Par exemple la variable IMP est extraite par df$IMP ou df[,"IMP"].
Il est également possible de transformer temporairement en variable toutes les composantes
d’une data frame. Pour cela, il suffit d’utiliser la fonction attach. En éxécutant attach(df),
vous verrez que vous disposez maintenant d’autant de vecteurs qu’il y’a de variables,
vecteurs que vous pouvez manipuler. Ainsi, au lieu de taper sum(df$JA1) pour avoir le total
de la variable JA1, il vous suffit de taper sum(JA1). Cependant, les modifications qui
pourraient avoir lieu sur ces variables ne seront pas prises en compte. Pour effacer toutes
ces "nouvelles" variables, il suffit d’éxécuter detach(df).
Enfin, pour être complet, sachez qu’il est possible de rajouter des colonnes à une data
frame. Si par exemple, dans la table df, on veut ajouter la variable
, il suffit de taper l’instruction
df$JA = df$JA1 +df$JA2 + df$JA3. La nouvelle variable apparaitra dans la dernière
colonne à droite.

2 - Gestion des objets : Entrée - Sortie


ette section est dédiée à la gestion des objets dans R. Son apprentissage doit vous
permettre de vous familiariser avec les outils permettant de sauvegarder et de charger des
objets. Par ailleurs, R étant avant tout un logiciel de traitement de données, un paragraphe
sera consacré à la gestion des jeux de données (importation, exportation).

2.1 - Enregistrement et chargement des objets

’enregistrement d’un objet dans R est très simple. Il se fait à l’aide de la fonction save en
précisant l’objet à sauvegarder et le nom du fichier (avec l’extension .RData). Lorsque vous
redémarrerez une session, il suffira alors d’utiliser la fonction load en précisant l’adresse
complète du fichier à charger.
Reprenons l’objet ex.liste de la section précédente. La sauvegarde de cet objet s’effectue
par l’instruction save(ex.liste,file="sauvliste.RData").
Lors d’une nouvelle session, load("C:/.../sauvliste.RData") chargera l’objet ex.liste.

Une autre manoeuvre consiste à sauvegarder la totalité des objets créés lors d’une session
par la commande save.image("C:/.../sauv.RData") et de charger cette dernière lors
d’une nouvelle session (load("C:/.../sauv.RData")). Ce procédé peut être utile lorsque
l’on souhaite sauvegarder un nombre important d’objets. Il a cependant l’inconvénient de
charger à l’ouverture de la nouvelle session plusieurs objets "parasites" inutiles pour
l’utilisateur.

2.2 - Importation et Exportation de données

l est très rare, lors d’une analyse statistique, que le jeu de données sur lequel est basée
cette étude soit directement utilisable. Dans la grande majoritédes cas, un "nettoyage" et/ou
une fusion de plusieurs tables s’imposent. Si R peut très bien remplir cette tâche, ce n’est
pas son but premier, et il est préférable d’utiliser d’autres outils plus adaptés pour effectuer
cette démarche préalable. En conséquence, il est nécessaire de bien connaître les outils pour
importer des fichiers de données autres que ceux dont le format est reconnu par le logiciel.
D’autre part, toutes les personnes ne travaillent pas avec le même logiciel, il peut être utile
de connaître les fonctions permettant de "rapatrier" des données d’autres logiciels de
statistiques. C’est ce que nous verrons dans un deuxième temps.

2.2.1 - Importation et Exportation de fichier-texte

es fonctions permettant de lire des données dans un fichier texte sont nombreuses et
efficaces dans R. C’est pourquoi il est très pratique, entre le fichier de données nettoyé (au
format xls par exemple) et la table dans R, de passer par l’intermédiaire d’un fichier-texte.
Cela est d’autant plus pratique que la plupart des logiciels laissent la possibilité d’enregistrer
les tables au format ".txt".
Une fois que vous disposez de votre fichier-texte, vous pouvez le lire avec la fonction
read.table. Cette fonction (qui renvoie une matrice ou une data frame) admet un seul
argument obligatoire : le nom du fichier-texte (précédé éventuellement du chemin d’accès).
Les autres arguments servent àpréciser certains codes utilisés dans le fichier (indicateur de
séparation, représentation des valeurs manquantes, des virgules ...). Si le fichier-texte
respecte les valeurs par défaut de cette fonction, aucun de ces arguments n’est utile.
Malheureusement, ce n’est pas le cas des fichiers-texte issus d’autres logiciels.
Prenez les fichiers dontxt0.txt et dontxt.txt et placez les dans votre répertoire de travail. Le
premier est un modèle du genre. En effet, les observations qualitatives sont entre
guillemets, le signe décimal est celui par défaut (à savoir "."), ... ce qui n’est pas du tout le
cas du second. Cette différence a une conséquence immédiate sur le résultat de la fonction
read.table. Si vous exécutez les instructions ci-dessous...

don.txt0<-read.table("dontxt0.txt")

don.txt<-read.table("dontxt.txt")

....vous voyiez tout de suite que la table dontxt0 n’est pas conforme. En effet,
La première ligne contenant le nom des variables est considérée comme une
observation. Pour éviter cela, il faut indiquer que cette ligne contient le nom des variables
par l’ajout de l’argument header=T.
Les identificateurs d’indivdus (Rownames) sont considérés comme une variable à part
entière, ce qui n’est pas le cas. Il faut donc rajouter l’option row.names=1.
Le signe de virgule "," n’est pas celui par défaut. Il est donc nécessaire de l’indiquer
(option dec=",").

Ces précisions ont permis d’obtenir une table propre. Mais maintenant, il s’agit de vérifier
(Ceci peut être fait avec les fonctions is.numeric, is.factor, ...) que les types des
variables en colonnes sont justes. Or, dans un cas comme dans l’autre, ce n’est pas le cas.
La variable IMP, variable catégorielle mais dont les modalités sont des entiers, a été
considérée comme numérique. A l’issue d’une instruction read.table, il est donc
impératif de vérifier la nature des variables. Dans notre cas, cette vérification nous
amène àmodifier la variable IMP.

don.txt$IMP<-as.factor(don.txt$IMP)

Il existe d’autres fonctions permettant de lire des données dans un fichier-texte. Elles sont
toutes plus ou moins proches de read.table car elles ne différent que par la présence d’une
option supplémentaire. Parmi elles, on peut citer scan, read.csv, read.delim, read.fwf. Il
est bon de les connaître (si leur utilisation est vraiment nécessaire), mais dans la grande
majorité des cas, la fonction read.table est suffisante pour arriver à ses fins.

L’exportation de données vers un fichier-texte se fait au moyen de la fonction write.table.


Les deux arguments obligatoires sont le nom de l’objet à exporter (matrice ou data frame)
et le nom du fichier qui le contiendra. Les autres arguments sont les mêmes que ceux de la
fonction read.table, i.e. qu’ils servent à définir différents codes. Pour continuer avec
l’exemple ci-dessus, on enregistre la table txt en donnant l’instruction
write.table(txt,"C:/.../fichier.txt").

2.2.2 - Importation de données d’un autre logiciel statistique

n module a été spécialement conçu pour pouvoir importer des fichiers de données
produit par d’autres logiciels statistiques. Il s’agit de la librairie foreign, librairie intégrée
àla version de base de R. Plusieurs systèmes statistiques sont pris en compte (Minitab,
SPSS, Stata, SAS, Splus, ...), mais nous n’en verrons ici que quelques uns. Avant de
commencer, il faut savoir qu’étant donné leur coût, il est très rare que plusieurs logiciels
statistiques cohabitent. Cependant, il peut arriver que ce module soit utile si un travail est
effectué à plusieurs dans différents environnements.

2.2.2-1 - SAS

’importation de fichier de données SAS est assez laborieuse et possède un inconvénient :


il est obligatoire de posséder SASsur son ordinateur. La procédure se déroule en deux
temps. Tout d’abord, dans SAS, il faut transformer la table de données en une table au
format SAS de transport (".xpt"). Ensuite, R est capable de reconnaitre ce format et de le
transformer en un objet.
La première phase s’effectue avec le programme SAS suivant

libname src2rd ’emplacement_de_la_table_SAS’;

libname rd xport ’destination_de_la_table_XPT’;

proc copy in=src2rd out=rd;

select nom_de_la_table_SAS_à_transformer;

run;

Avec ce code, SAS créé en fait deux nouvelles librairies : l’une (src2rd) dans laquelle il va
copier la table d’origine et l’autre (rd) dans la quelle il va mettre la table finale (au format
XPT). L’utilisateur doit indiquer le chemin d’accès à la table SAS, le nom du fichier XPT qui
sera créé (avec chemin d’accès), et le nom de la table SAS àtransformer.
Si l’on prend la table de données donsas , cela donne :
libname src2rd ’C:/.../’;

libname rd xport ’C:/.../donsas.xpt’;

proc copy in=src2rd out=rd;

select donsas;

run;

Cette première phase peut également être réalisée depuis R par la fonction read.ssd.
Suite à cela, il reste à convertir le contenu du fichier XPT en un objet R avec la fonction
read.xport, qui a pour argument le nom du fichier XPT.

don.sas<-read.xport("donsas.xpt")

Cette procédure est donc assez lourde et il est possible de rencontrer quelques problèmes
avec les variables qualitatives. Par ailleurs, il est obligatoire de disposer de SAS. Elle n’est
donc pas très efficace et il est préférable de passer par l’intermédiaire de fichier-texte.

’importation de fichier de données SAS est assez laborieuse et possède un inconvénient :


il est obligatoire de posséder SASsur son ordinateur. La procédure se déroule en deux
temps. Tout d’abord, dans SAS, il faut transformer la table de données en une table au
format SAS de transport (".xpt"). Ensuite, R est capable de reconnaitre ce format et de le
transformer en un objet.
La première phase s’effectue avec le programme SAS suivant

libname src2rd ’emplacement_de_la_table_SAS’;

libname rd xport ’destination_de_la_table_XPT’;

proc copy in=src2rd out=rd;

select nom_de_la_table_SAS_à_transformer;

run;

Avec ce code, SAS créé en fait deux nouvelles librairies : l’une (src2rd) dans laquelle il va
copier la table d’origine et l’autre (rd) dans la quelle il va mettre la table finale (au format
XPT). L’utilisateur doit indiquer le chemin d’accès à la table SAS, le nom du fichier XPT qui
sera créé (avec chemin d’accès), et le nom de la table SAS àtransformer.
Si l’on prend la table de données donsas , cela donne :

libname src2rd ’C:/.../’;

libname rd xport ’C:/.../donsas.xpt’;

proc copy in=src2rd out=rd;

select donsas;

run;

Cette première phase peut également être réalisée depuis R pa

Vous aimerez peut-être aussi