La chronique SAS – SAS et R

le 17 avril 2013 à 09:58
dtalbot

En lisant le dernier numéro de Convergence, j’ai bien aimé la chronique de Denis Talbot sur la programmation efficace en R. Je vois SAS et R comme deux langages statistiques qui se complémentent. Les gens se demandent souvent s’il est possible d’appeler R à partir de SAS. La réponse est oui et j’aimerais ici vous montrer comment procéder.

De où?

Vous pouvez appeler R de SAS à partir:

  • Du module SAS/IML
  • De l’application SAS IML Studio (livrée avec SAS/IML)

Cela est possible si vous avez la version 9.22, ou une version plus récente, de SAS.

Appeler R à partir de SAS/IML

Avant de procéder, nous supposons ici que vous avez installé SAS et R sur le même ordinateur. Veuillez noter que l’interface R de SAS ne supporte que la version 32 bits de R. Avant de commencer, vous devez vérifier si vous avez la permission d’appeler R à partir de SAS en validant le statut de votre option système SAS RLANG (voir encadré 1).

Encadré 1

Allez vérifier dans le fichier journal la valeur retournée. Si cette dernière est RLANG, vous allez pouvoir appeler R à partir de SAS. Si, par contre, vous obtenez la valeur NORLANG, vous ne pourrez pas. La solution est alors de démarrer SAS avec l’option -RLANG (par exemple en insérant cette option dans le fichier de configuration SASV9.CFG).

Une fois ces vérifications complétées, vous pouvez soumettre des instructions R à partir de SAS en utilisant les instructions SAS SUBMIT et ENDSUBMIT dans la procédure Proc IML, mais en utilisant l’option R. Voici un exemple simple où l’on ne transfère pas de données entre les deux environnements (voir encadré 2).

Encadré 2

Qu’en est-il des données?

Vous pouvez transférer des données et des résultats statistiques entre SAS et R. Pour SAS, les données que vous pouvez transférer à R doivent être sous la forme d’une base de données SAS ou d’une matrice SAS/IML. De R vers SAS, les données que vous pouvez transférer sont le data frame ou une matrice R. Dans l’exemple suivant, la base de données SAS CLASS de la bibliothèque SASHELP est transféré vers R dans un data frame nommé DF. On demande ensuite à R d’afficher le nom des variables de ce data frame (voir encadré 3).

Encadré 3

De façon similaire, vous pouvez faire le transfert de données de R à SAS en utilisant les instructions ImportDataSetFromR et ImportMatrixFromR.

Faire une analyse R sur des données SAS

Pour effectuer une analyse R sur des données SAS, vous devez :

  • transférer la base de données SAS de SAS à R
  • effectuer l’analyse dans R

Voici un exemple où l’on effectue une régression linéaire dans R à partir de données SAS en utilisant Proc IML (voir encadré 4).

Encadré 4

Création de graphiques dans R à partir de SAS

Les graphiques dans R apparaissent dans leur propre fenêtre et par défaut sur le même ordinateur où R est exécuté. Si vous soumettez votre Proc IML à partir du SAS Display Manager, vous pouvez créer des graphiques R à partir de Proc IML. Ce n’est pas le cas si vous soumettez votre Proc IML à partir d’Enterprise Guide, car en général les instructions sont envoyées à un serveur SAS et non à votre ordinateur. Voici un exemple où l’on crée une matrice de diagrammes de dispersions (matrix plot) dans R avec la fonction PAIRS à partir de données SAS (voir encadré 5).

Encadré 5

Conclusion

Et voilà! Vous êtes maintenant initié à la façon d’appeler R à partir de SAS. Vous pouvez transférer des données et des matrices d’un environnement à l’autre, appeler des fonctions, des «packages» et des graphiques R. N’oubliez pas qu’il est non seulement possible de le faire avec Proc IML, mais aussi à partir de l’application SAS IML Studio et ainsi utiliser le langage SAS IMLPlus, qui est une extension du langage IML.

Sylvain Tremblay, Groupe de formation – Institut SAS (Canada) inc.

Retour à la table des matières

Références

Calling Functions in the R Language

http://support.sas.com/documentation/cdl/en/imlug/63541/HTML/default/viewer.htm#r_toc.htm

Share