De nombreux cas de figure dans R nécessitent de réorganiser les données de manière à changer ce que représente une ligne dans un data.frame : tableaux croisés statistiques, construction de graphiques, opération à réaliser systématiquement sur N colonnes. Des pivots (en général partiels) dans les données sont alors à envisager ; nous verrons ici les fonctions pivot_longer et pivot_wider du package {tidyr}, élément du méta-package {tidyverse}. A noter que ce document est une version plus récente et plus courte d’un article plus […]
Un problème de riche Transposer des données, c’est-à-dire transformer des lignes en colonnes ou des colonnes en lignes, n’est généralement pas une opération facile. Sous R, la principale difficulté vient de la multiplication de packages pour réaliser cette opération : ici nous décrirons la logique et les avantages de trois d’entre eux, {reshape2} qui est le plus ancien, {tidyr} qui est intégré au tidyverse et {cdata} qui propose une approche assez différente via un “plan de transposition”. Commençons par créer […]
SAS est un logiciel merveilleux, mais tous n’y ont pas accès. Pour contenter la soif de données de vos collègues qui n’auraient pas d’autre outil à disposition, vous envisagez d’envoyer vos données SAS dans une feuille Excel. Et là, le drame se noue : comment vous y prendre ? Nous passons en revue 6 méthodes qui nécessitent des installations, des manipulations et des licences différentes : il y en aura forcément une qui vous conviendra. L’export en fichier plat La procédure Export permet […]
Ma fille vient me trouver pour m’expliquer qu’elle se met au hash. Elle a lu je ne sais où que c’était excellent, « surtout pour les joints ». Je n’avais que deux bémols avant d’acquiescer : d’abord qu’il ne faut pas en abuser, et qu’ensuite on ne dit pas joints mais jointures, en bon français. C’est donc à une nouvelle manière de rédiger des jointures via l’étape DATA que le hash (également appelé hash object ou table de hachage) nous donne accès. La […]
De nombreux cas de figure dans SAS nécessitent de réorganiser les données de manière à changer ce que représente une observation dans une table. Des pivots (en général partiels) dans les données sont alors à envisager ; la procédure TRANSPOSE est l’outil privilégié pour les pivots. C’est quoi un pivot ? L’exemple ci-dessous illustre un pivot partiel de la variable Y selon la variable IDENT. La variable X, elle, est perdue. A l’intérieur de chaque bloc de IDENT dans la table d’origine, […]
Éternel sujet de questionnements, les dates SAS ont un fonctionnement qui a tout pour surprendre. Petite série d’explications avant qu’il vous prenne l’envie de passer toutes vos dates au goudron et aux plumes. Comment sont stockées les dates SAS ? Il existe deux types de variables qui contiennent des dates dans SAS : toutes deux sont de type numérique. On distingue les simples dates et les « datetimes ». Les simples dates sont stockées comme des nombres de jours depuis le 1er janvier 1960. […]
Pour certains, le format, ce n’est qu’une cochonnerie qui complique passablement le travail sur les dates, ou sur les nombres, en n’affichant pas les données telles qu’elles sont stockées. On sait moins que, dans SAS, les formats sont également un formidable outil de recodage de variables. Quel est le rôle du format ? Le format est un moyen de présenter (à l’affichage principalement) les données différemment de la façon dont elles sont physiquement stockées. L’exemple le plus frappant est celui des […]
L’intrigante instruction RETAIN devient parfois indispensable dans une étape Data. Quelques mots pour vous aider à savoir si, comme l’ami Ricoré, elle vient toujours au bon moment. Que se passe-t-il dans une étape Data ? Lors de la lecture de données dans une étape Data (que ce soit avec une instruction SET, MERGE ou INFILE), les informations qui composent les observations sont stockées de manière temporaire dans un espace appelé Vecteur de Travail (ou PDV dans les documents en anglais). Le […]
La fonction LAG est souvent présentée comme un cas de sorcellerie appliquée à l’étape DATA. Elle fonctionne de manière caractérielle, un peu à son humeur, et pas toujours de manière cohérente. Pourtant, de nombreuses personnes en donnent une définition simple : « la fonction qui renvoie la valeur de l’observation précédente ». Petite enquête au pays du LAG pour savoir si elle a vraiment mauvais caractère, ou si son comportement n’est pas abusivement simplifié par la définition précédente. Que se passe-t-il dans une […]
Déjà qu’ils sont nombreux, ceux qui pestent contre les formats ! Mais s’ils connaissaient tous l’abominable syntaxe des picture, ces formats « calculés », quel serait leur nombre ? En même temps, ce serait l’occasion de trouver mille manipulations bien pratiques pour formater élégamment et en évitant d’inutiles étapes DATA. Un picture est un format particulier destiné à des variables de type numérique ; il peut s’appliquer à des nombres, des dates, des heures ou des datetimes. Il n’existe pas d’équivalent pour les variables de […]
Beaucoup de programmeurs SAS connaissent les macro-variables, pratiques pour véhiculer de l’information (des paramètres) d’un point à un autre d’un programme. Également populaires, les macro-programmes, qui permettent d’encapsuler du code et de s’en resservir aussi souvent que nécessaire en changeant seulement quelques paramètres. Mais les macro-fonctions ? A quoi servent-elles ? Peuvent-elles m’être utiles ? Quelle différence avec une fonction SAS ? Il y en a principalement deux : une fonction SAS s’applique à la valeur d’une variable, stockée dans […]