logo

Version de SAS : Transformation SAS 6 <-> SAS 8

Version de SAS : Transformation SAS 6 <-> SAS 8

Un répertoire sur lequel pointe une librairie SAS ne peut contenir que des tables SAS d’un format identique (sas 6 – ssd01 ou sas 8 sasbd7). Existe-t-il un moyen de convertir une table SAS8 en SAS6 autre que de la recréer à partir de la version 6 du logiciel ?   Concernant la première affirmation sur les librairies, ce n’est pas tout à fait exact. Avec une astuce, il est possible de définir une librairie qui montre à la fois […]

Séries temporelles : ARIMA – Ecriture du modèle

Bonjour, Comment traduire un modèle issu de la procédure PROC ARIMA (Ex : Factor 1: 1 – 0.52379 B**(1)) en une équation de prévision telle Xt en fonction de Xt-1, Xt-12, … ? Merci d’avance de votre réponse.   Deux solutions : la proc ARIMA a une option FORECAST (avec une option LEAD pour indiquer le nombre de périodes pour lesquelles calculer des valeurs) pour créer une table de prévisions vous pouvez mettre en œuvre l’équation de prévision dans une […]

Séries temporelles : SARIMA

Bonjour, Le programme pour un ARIMA ((011)(011)12) est-il… proc arima data=a.s1; identify var=prod(1,12) nlag=24 noprint; estimate q=(1)(12) ; run; quit; ou proc arima data=a.s1; identify var=prod(1,12) nlag=24 noprint; estimate q=(1)(12) Q=(1)(12) ; run; quit; ??? merci   Bonjour. On suppose qu’on cherche à estimer un processus SARIMA (p,d,q)(P,D,Q)s. Dans l’instruction ESTIMATE vous devez indiquer P,p, Q et q, avec une syntaxe qui défie un peu la logique : ESTIMATE P=(p)(P) Q=(q Q) ; En revanche, comme SAS ne fait pas […]

Séries temporelles : lire les autocorrélogrammes

Comment choisir p et q (pour un processus ARMA(p,q)) en lisant un autocorrélogramme? Merci   Bonjour. Voici un petit extrait de support de cours sur la question. Dans SAS, outre les auto-corrélogrammes produits par la procédure ARIMA, il y a la possibilité de laisser SAS proposer ses rangs de modèle ARMA avec la procédure HPFDIAGNOSE incluse dans le très coûteux module Forecast Server.

Score : construire un score d’appétence

Je dois calculer le score d’apptence pour le contrat auto et je voudrais savoir si je dois prendre en compte dans mon étude tous les clients ayant un contrat auto existant dans mon portefeuille ou uniquement les clients qui ont souscrit au contrat auto depuis deux ans par exemple Merci d’avance   Bonjour. Il n’y a pas de réponse tranchée à votre question. Tout dépend des effectifs dont vous disposez. En gros : soit vous avez peu de contrats auto […]

SAS/BASE : Sélection des premières lettres de chaque mot d’une chaîne de caractères

Bonjour, A partir d’une variable texte, j’ai besoin d’extraire les premières lettres de chaque mot de la chaine de caractères. Exemples : à partir de variable1 Il fait beau Toto fait ses devoirs je souhaite obtenir variable2 IFB TFSD Existe-t-il une fonction SAS permettant de faire cette sélection ? Si non, avez-vous une idée du codage et des fonctions à utiliser pour obtenir le résultat attendu ? Merci d’avance.   Bonjour. Il n’y a pas de fonction automatique dans SAS, […]

SAS/BASE : proc DELETE ?

J’ai découvert une « proc delete » dans quelques programmes. N’ayant jamais vu cette procédure auparavant, je me suis empressé de regarder dans ma doc. Procédure inconnue. Aucune référence. J’ai été voir chez SAS/France, (cf. http://support.sas.com/documentation/cdl/en/allprodsproc/61917/HTML/default/a003135046.htm) : même résultat. Et pourtant elle marche, je l’ai testée moi aussi. Elle semble ne pas faire grand chose de plus que supprimer des tables ; mais j’aimerais en savoir plus.   Bonjour. Cette procédure est en fait dérivée de la proc DATASETS qui contient une […]

SAS/BASE : suppression d’espaces

Je voudrais supprimer des blancs à droite et à gauche de caractères en veillant à ne pas le faire dans la chaine de caractères afin de les concaténer. Ex :  » Dupont  »  » Jean Paul «    En version 8, il faut utiliser deux fonctions : LEFT et TRIM (la 1e supprime les blancs de gauche, la 2nde ceux de droite). En SAS v9, il y a une fonction STRIP qui fait les 2 d’un coup.

SAS/BASE : espace et concaténation

Bonjour. Je souhaite concaténer le nom et prénom d’un individu en supprimant à droite les blancs. Comment faire?   Vous pouvez utiliser la fonction TRIM qui supprime les blancs à droite : Nom_complet = TRIM(prenom)!! » « !!TRIM(nom) ; Ou, en SAS v9, utiliser la fonction STRIP (suppression des blancs à gauche et à droite), ou encore les fonctions CATT (concaténation et suppression des blancs à droite) ou CATX (concaténation, élimination des blancs à gauche et à droite, insertion d’un caractère séparateur) […]

SAS/BASE : Fonction SAS Ascii

Existe-t-il une fonction SAS permettant de donner le code ascii d’un caractère ? Merci pour votre reponse   Bonjour. Il s’agit de la fonction RANK, appliquée à une variable texte. La fonction BYTE fait l’opération inverse (renvoie un texte à partir du code Ascii). Attention, si la fonction RANK est exécutée sur MVS, elle renvoie le code EBCDIC.

SAS/BASE : Identifier des doublons

Bonjour, j’aimerais savoir comment faire pour comparer des observations au seins d’une même variable. Par exemple, j’ai une variable nom et une variable adresse au sein d’une même table. J’aimerais regarder au seins de ma table s’il existe des observations qui ont les memes valeurs pour les 2 variables. Si c’est le cas, je veux attribuer un numéro identique à ces observations. Merci d’avance pour votre aide.   Vous pouvez, après un tri de votre table, utiliser une étape Data […]

SAS/AF : Envoi d’un email à partir d’un carnet d’adresse Outlook

Bonjour Je suis en train de réaliser une appli sas/af et je souhaite savoir s’il est possible d’envoyer un mail à un destinataire dont l’e-mail se trouve dans un carnet d’adresses Outlook. Merci   Voici un petit programme qui peut être lancé depuis une appli AF sans problème, c’est du SAS de base tout bête. On peut utiliser au choix l’adresse complète du destinataire (genre contact@od-datamining.com) ou son alias (Olivier Decourt) mais uniquement s’il n’y a pas d’équivoque possible (pas […]

SAS/AF : Compiler une application en cachant le code SCL

Comment compiler mon application SAS/AF en rendant le code SCL inaccessible ?   Avec la procédure BUILD, instruction MERGE, option NOSOURCE, comme dans l’exemple ci-dessous… proc build catalog = maBib.appliDef ; /* catalogue de l’appli livrée */     merge catalog = maBib.appliDvp /* catalogue de l’appli de développement */ NOSOURCE ; /* source non visible */ run ;

Régression : structure des données pour l’utilisation de la proc PHREG

Bonjour, je souhaite réaliser un score « durée de conservation d’un véhicule » à l’aide de la proc PHREG. Je voulais savoir s’il était possible d’avoir dans la table SAS plusieurs lignes par client. En effet l’unité d’observation étant le vehicule, il peut y en avoir au moins 2 par client. Cela pose-t-il un problème ? Sous quelle forme doivent apparaître les données ?   Comme pour toute modélisation, la question est de savoir si les observations sont indépendantes. Si vous travaillez […]

Régression : qualité d’un modèle avec la proc LOGISTIC

Pour déterminer la qualité de mon modèle logistique j’ai utilisé la valeur c qui est de 0.71 ; peut-on dire que dans 71% des cas le modèle est bien prédit ? sinon, quel indicateur utiliser ? merci.   Le c de 0,71 ne signifie pas qu’on a 71% de bonnes prédictions. Pour pouvoir donner ce genre d’indications, il faut : choisir un seuil pour transformer les prédictions continues (le score) en prédictions binaires (par exemple : 0,5 : si P_1 […]

Régression : modèle logistique polytomique

Bonjour, j’aimerai savoir à l’aide de quelles options sous sas peut on mesurer l’efficacité d’un modèle logistique polytomique (Y a 4 modalités). Est ce que l’on peut tracer les courbes roc, du lift et de concentration comme pour un modèle binaire ? Ou faut t’il tracer une courbe pour chacune des modalités de la variable Y ?? D’avance merci.   L’évaluation d’un modèle polytomique n’est pas simple, puisqu’on a 3 fonctions de score indépendantes pour Y à 4 modalités. La […]

Régression : la constante dans la proc logistic

Bonjour, on sait que pour la proc Logistic, la constante est la note moyenne des modalités de référence, mais qu’en est-il pour la Genmod ? Les modalités de référence y sont mises à 0 dans les sorties. Merci beaucoup.   Quand les coefficients de référence sont non nuls, la constante correspond au log de la proportion évènements / non-évènements sur l’ensemble de la population ; quand les coefficients de référence sont des zéros, la constante traduit le log de la […]

Régression : Modélisation d’un taux de destruction en assurance Dommages

Bonjour, je souhaite modéliser un taux de destruction (rapport du sinistre sur capital assure), dans des cases tarifaires (croisement de variables tarifaires). La loi beta est souvent utilisée pour cela (support sur [0,1]]. Je souhaitais utiliser GENMOD, mais la loi Beta ne fait pas partie de la famille exponentielle. Y a t-il une autre procédure plus adaptée ? Merci d’avance.   Les documents suivants (http://psychology.anu.edu.au/people/smithson/details/betareg/Readme.pdf, http://psychology.anu.edu.au/people/smithson/details/betareg/Smithson_Verkuilen06.pdf et des exemples sur http://psychology.anu.edu.au/people/smithson/details/betareg/exemples_SAS_beta_regression.sas) expliquent comment faire de la régression beta avec une […]

Régression : Intervalles de confiance par la proc LOGISTIC de SAS

Bonjour, J’utilise la proc LOGISTIC de SAS avec les options de sortie LOWER et UPPER permettant d’obtenir un intervalle de confiance autour de la probabilité PRED, celui-ci est construit par la méthode de Wald. Je suis capable de recalculer la probabilité sur une autre population que celle de la construction du score via la formule de score, mais je ne sais pas simuler la méthode de Wald utilisée car je ne connais pas sa formulation mathématique. Pouvez-vous me communiquer le […]

Régression : Régression logistique, nombre d’observations qui varie

Comment se fait-il que lors d’une « proc logistic » à l’autre, le nombre d’observations changent. En effet, j’ai effectué celle-ci sur une base de 55 variables puis sur une de 32 variables. Dans cette procédure je ne change pourtant pas les variables qui doivent entrer dans le modèle et je me retrouve avec dans la première situation le nombre complet de mes observations et dans l’autre un nombre moins important avec 430 données enlevées dues aux valeurs manquantes me dit-il. Comment […]

Régression : Régression logistique : quanti ou quali ?

Je voudrais connaitre comment faire pour savoir si les variables sont meilleures en classes ou en continues (pour les quantitatives). Faut-il les tester une par une sachant que j’en ai beaucoup ?   A priori, une variable quantitative n’est inclue comme continue que si elle a un impact linéaire sur la cote (rappel : cote = odd = P(Y=1|X)/P(Y=0|X) pour une variable X quanti donnée). Cela n’est pas systématique, mais quand c’est le cas, on obtient un modèle plus robuste […]

Régression : modélisation d’un prix

Je dois modéliser un prix. J’ai utlisé jusqu’à présent la PROC REG mais je ne sais pas comment intégrer les variables qualitatives (certaines ont un gand nombre de modalités: par exemple 15).   La procédure REG ne permet pas d’inclure des variables qualitatives dans le modèle. Il faut utiliser alors la proc GLM qui fonctionne de manière assez semblable. PROC GLM DATA = tableSAS ;    CLASS listeVariablesQuali ;    MODEL variableY = listeVariablesQuantiEtQuali / ESTIMATE ; LSMEANS variableQuali / PDIFF=ALL ; […]

Régression : Valider un modèle avec la proc LOGISTIC, préférer un modèle à un autre

Pour valider un modèle avec la V6 j’utilisais la proba correspondante au Khi 2 de la log vraisemblance. Avec la V8 le Khi 2 ne sort plus automatiquement, et je n’ai pas trouvé l’option pour le faire apparaître. Connaissez-vous cette option ? Ou d’une manière plus générale, quels sont les critères qui nous permettent de valider un modèle ? Lorsque l’on compare 2 modèles, et que les statistiques d’Akaike et de Schwartz ne sont pas plus petites pour le même […]

Régression : Sorties de la proc LOGISTIC, valeur de l’AUC

Que représente la valeur c obtenue dans la proc logistic ?   Il s’agit d’une manière de calculer l’aire située sous la courbe ROC. Cette aire (comprise entre 0,5 et 1) détermine le pouvoir discriminant du modèle. La courbe ROC met en regard la sensibilité et la spécificité du modèle, c’est à dire sa capacité à identifier correctement l’évènement, et sa capacité à identifier correctement le « non-évènement ». Donc entre deux modèles, celui qui a la plus forte valeur de c […]

Régression : Sorties de la proc LOGISTIC, option CTABLE

Comment lire les tableaux issus de l’option CTABLE d’une procédure LOGISTIC ?   On y trouve, pour différents seuils de score, les nombres et les pourcentages d’évènements reconnus comme tels, de non-évènements reconnus comme tels, et d’erreurs commises dans un sens ou dans l’autre. La colonne « CORRECT » donne le pourcentage de bonnes réponses fournies par le modèle. Le seuil de score permet de faire varier la frontière qu’identifie le modèle entre les évènements et les non-évènements. On peut proposer plusieurs […]

Régression : Prédiction à partir d’une proc LOGISTIC

Comment utiliser le modèle obtenu à l’aide d’une proc LOGISTIC dans le cadre d’une prévision ?   Le plus simple est d’ajouter aux données servant à construire le modèle celles que l’on souhaite prévoir ; pour ces dernières, on laisse la variable à prédire à valeur manquante. On met la table en entrée de la proc LOGISTIC, et toutes les observations ayant une valeur manquante ne sont pas utilisées pour le calcul des coefficients (donc on retrouve le modèle). En […]

Régression : Sommes de carrés et tests

Dans la procédure GLM, nous souhaiterions connaître la signification des tests : Type I SS Type II SS Type III SS Quels degré d’erreur est admis dans les calcul de la proc GLM ? peut on le changer ? Quel est le lien entre ces 3 tests et la significativité des variables ?   Il existe en fait 4 types de sommes de carrés des écarts (SS pour Sum of Squares) : ce sont des modes de calcul des parts […]

Performance : volume maximal de données gérable

Je cherche à savoir qu’elle est la limite en terme d’enregistrements que peut contenir une table SAS sous la V9.   Il n’y a, a priori, dans SAS (version 9 comme précédentes) aucune limite de taille pour les tables créées. Les seules limites tiennent à l’espace disponible sur la machine qui hébergera la table. Et évidemment, à l’emploi de cette table, si elle est très grosse, les capacités (mémoire vive) de la machine qui effectuera des traitements complexes (tris, procédures […]

ODS : colonnes de largueur uniforme dans une sortie RTF

Comment uniformiser la taille des colonnes d’une table utilisant ODS RTF et proc Report ? Pour ODS PDF il existe l’option UNIFORM. Existerait-il un équivalent pour ODS RTF ? Merci.   J’ai peur qu’une telle option ne soit pas prévue en RTF. Ce format avise en fonction du contenu des colonnes pour dimensionner son tableau, mais apprécie peu les contraintes à ce niveau. En revanche, en SAS 9.2, vous pouvez utiliser une option UNIFORM dans ODS TAGSETS.RTF, qui est une […]

ODS : n’afficher que certains quantiles dans la proc UNIVARIATE

je fais une PROC UNIVARIATE. Je m’intéresse au P90. Comment sortir spécifiquement ces stats ? (comme le nombre d’obs…)   Par « sortir », vous entendez « … dans une table » ou « n’afficher que… » ? Dans le premier cas, on peut utiliser l’ODS OUTPUT, dans le second, ODS SELECT. Dans les deux cas, on doit connaître le nom de l’objet ODS (le bout de sortie) que l’on veut manipuler. Pour le connaître, on peut exécuter la proc ainsi : ODS TRACE ON / […]

ODS : Rendre les sorties générées par l’objet ODSOUT visibles dans l’Output

Bonjour, Je génère des tableaux via l’objet ODSOUT, afin de personnaliser mes sorties ODS. Malheureusement les tableaux générés par cet objet, ne sont pas visibles dans l’Output. Peut-on faire apparaître les tableaux ainsi créés dans l’Output? Merci   Malheureusement non. Il est obligatoire de fermer ODS LISTING pour que l’objet ODSOUT fonctionne sans erreur jusqu’à SAS 9.4. Même à partir de cette version, les sorties de l’objet ODSOUT ne seront pas visibles dans la fenêtre Output, même s’il n’y a […]

ODS : procédure TABULATE sans affichage ?

Bonjour, J’utilise une proc tabulate pour créer une table de données [ proc tabulate data=work.table out=work.table1 ] sur laquelle j’effectue des calculs. j’obtiens également en sortie le tableau résultat qui ne m’est pas utile. Pouvez vous m’indiquer s’il existe un équivalent de l’option NOPRINT de la proc FREQ pour la proc TABULATE ? D’avance merci.   Bonjour. Vous pouvez encadrer votre procédure des instructions ODS EXCLUDE ALL ; et ODS SELECT ALL ; pour la rendre « muette ». ODS EXCLUDE ALL […]

ODS : bug dans ODS OUTPUT avec la procédure FREQ

Bonjour, Je souhaite faire une sortie ods d’une proc freq. J’ai donc fait la manip « ods trace on … » pour avoir le nom de la sortie (crosstabfreqs) mais à l’éxecution du freq, le message suivant apparait dans la log : « ERREUR: La valeur Fréquence n’est pas un nom SAS valide. » Comment faire ? merci   Il s’agit d’un bug de la version 9.1 en français, qui a été corrigé par un hotfix d’ailleurs. Sans rien changer à votre installation de […]

SAS/STAT : Proc GENMOD ou LOGISTIC ?

Bonjour, durant mon stage j’ai beaucoup utilisé le modèle logistique. J’ai finalement choisi la proc GENMOD, plus claire. Mais peut on obtenir les odds-ratios sur celle-ci ? ou bien ne sont-ils présents que sur la proc LOGISTIC ?   Bonjour. Personnellement, ma préférence va à la proc Logistic, plus complète et spécialisée. En particulier, et pour répondre à votre question, elle est la seule à produire des odds-ratios. Mais elle édite également, par rapport à Genmod, des critères de qualité […]

ODS : Insérer un lien dans une PROC REPORT

Bonjour, Est-il possible d’attribuer un lien HTML à un en-tête de colonne dans la proc REPORT ? D’avance merci.   Bonjour. Le plus simple est d’utiliser l’attribut URL dans une option de style. Elle s’intègre à l’instruction DEFINE de votre variable. DEFINE … / … STYLE(HEADER)=[URL= »adresse »] ;

ODS : Récupérer les odds ratio dans une table

Bonjour, J’utilise la proc logistic pour calculer des odds ratio ajustés. Comment faire pour récupérer ces odds-ratio et leurs intervalles de confiance dans une table ? Merci. Bonjour. Il vous suffit de faire précéder votre PROC LOGISTIC de l’instruction suivante : ODS OUTPUT OddsRatios = nomTableSAS ; Pour fonctionner, il faut que cette instruction soit entre les instructions PROC LOGISTIC et RUN.

ODS : l’option NOPRINT ne marche pas avec la proc TTEST

Bonjour, Quelle option (ou démarche) utiliser pour éviter des sorties html de sas avec la proc ttest? Étant donné que je travaille sur un grand nombre de variables, je ne veux récupérer que les satistiques dans des tables sas avec l’option « ods output equality= statistics= ttests= « . En lançant cette procédure sur 240 variables et 59 300 individus, sas me renvoie un message selon lequel mes résultats sont trop volumineux au point de nécessiter beaucoup de ressources système. Le problème […]

ODS : récupérer une p-value d’un test de Fisher

Dans la procédure REG, comment récupérer la pvalue du modèle dans une table ?   ODS OUTPUT ANOVA = work.maTable ; PROC REG DATA = … ;    … RUN ; QUIT ;

ODS : récupérer les coefficients d’un modèle

Bonjour, Suite à un problème de modélisation via la procédure PROC LOGISTIC, j’aimerais récupérer les coefficients estimés du modèle dans une table SAS afin de pouvoir utiliser ensuite, la procédure SCORE et ainsi attribuer des scores à d’autres individus. Quel est l’option qui permet cette manipulation ? Merci d’avance de votre aide. Faites précéder votre proc LOGISTIC par l’instruction suivante : ODS OUTPUT parameterEstimates = work.coeffs ; et vous retrouverez dans la table COEFFS de la bibliothèque WORK vos coefficients. […]

ODS : Nom des sorties d’une procédure

Bonjour. J’aimerais récupérer dans une table SAS les sorties d’une procédure, au moyen de l’instruction ODS OUTPUT. Mais cette syntaxe me demande le nom de « l’objet » produit par la procédure : comment le connaître ? D’avance merci.   Pour connaître le nom des objets transmis à l’ODS par une procédure, il faut encadrer le programme par des instructions ODS TRACE. ODS TRACE ON ; PROC xxx … ; … RUN ; ODS TRACE OFF ; Dans la fenêtre LOG, chaque […]

ODS : Changer le titre d’une page HTML

Avec ODS HTML, j’obtiens toujours une page Web dont le titre (affiché dans le bandeau d’Internet Explorer) est SAS Output. L’instruction TITLE ne permet pas de rectifier cela. Comment faire ?   L’instruction TITLE ne concerne en effet que le corps de la page. Pour changer le titre de la page Web, il faut écrire après le nom de la page Web créée (dans l’instruction ODS HTML) la syntaxe (TITLE = « … »). Par exemple : ods html body=’c:\essai.htm’ (title= »~~~~~~ Tableau […]

ODS : « museler » la visualisation des pages Web

Je produis des pages Web avec ODS HTML. SAS me les affiche automatiquement. Comment débrayer cette fonctionnalité, et si possible par programme ?   De manière interactive, on peut désactiver cette possibilité avec TOOLS>OPTIONS>PREFERENCES, onglet RESULTS, décocher la case VIEW RESULTS AS THEY ARE GENERATED. Par programme, la solution est plus complexe : il faut modifier le SAS Registry, qui recense tous les réglages de la session. Pour cela, on va créer la ligne nécessaire dans un fichier externe, et […]

ODS : Couleurs RGB dans la Proc Tabulate

Bonjour. Je voudrais savoir comment utiliser les codes couleurs RGB (par exemple 0000FF) dans une procédure Tabulate pour créer un tableau coloré via l’ODS.   On peut utiliser une large palette de couleurs, y compris les RGB et les nuances de gris, à condition de respecter la syntaxe de SAS/GRAPH pour définir les couleurs, à savoir : on fait précéder de CX les codes RGB sans signe dièse on peut aussi utiliser des nuances de gris, de GRAY00 à GRAYFF […]

ODS : Mise en forme ODS

Est-il indispensable d’utiliser une procédure TEMPLATE pour changer la mise en forme des sorties de l’ODS HTML ?   Non, on peut utiliser une feuille de style pour obtenir ce résultat… ODS HTML BODY = …     STYLESHEET = « mon_fic.css » ; Ce fichier .css, qu’on appelle une feuille de style, permet de définir nombre de polices, couleurs, etc… Il peut se mettre en commun à plusieurs pages Web (d’où un gain de place). On peut aussi utiliser un des nombreux styles […]

ODS : L’ODS RTF ne fonctionne pas !

J’ai des messages d’erreur quand j’essaye de faire fonctionner un programme avec ODS RTF qui fonctionne chez mon collègue !   Sans présager des messages qui peuvent se trouver dans la Log, il y a avec la version 8.2 et certaines versions de Windows une incompatibilité d’humeur qui transpire sur l’ODS. La solution est d’aller dans le fichier de configuration (Sasv8.cfg) et d’éliminer les lignes qui contiennent le mot « DBCS » (dans l’exemple ci-dessous, supprimer UNIQUEMENT les lignes en gras) : […]

ODS : Vider la fenêtre Results

Bonjour. Je voudrais connaître la commande pour purger la fenêtre Results de SAS PC dans un programme. Merci.   Dans un programme SAS, la commande est : DM « odsresults ; clear » ;

Macro : faire un SET avec un nombre de tables variable

J’ai un nombre de tables (de 1 à 40 ou 50, il faut que soit un paramètre) et avec un SET j’en crée une seule. Comment écrire ça sans répéter 40 ou 100 fois le noms des tables dans le SET. data ww.CMb; set ww.CM1b ww.CM2b … ww.CM40b; run; Merci Bonjour, et merci de votre question. Vous pouvez utiliser un programme comme celui-ci : %MACRO empilement (nbTables) ;   DATA ww.CMb ;      SET        %DO i=1 %TO &nbTables ;          […]

Macro : &nomMV ne fonctionne pas !

Bonjour, Voici mon programme : %macro essai(a=); data outpct; set outpct; variable=’&a’;/*???*/ run; %mend essai; %essai(a=sonf); Je voudrais en fait que dans ma table outpct apparaisse une variable nommée « variable » dont la modalité serait ici ‘sonf’. Comment faire ? Merci d’avance.   Il suffit de mettre des doubles guillemets : « &a » , au lieu des simples. Ces derniers bloquent l’action du compilateur macro.

ODS : Récupérer le risque relatif

Bonjour, j’ai créé un fichier ODS PDF qui est une suite de tableaux réalisé avec des proc tabulate comme ceci : proc tabulate data=data.tab3 missing ; class cat ; class sonf; tables sonf all=’Total’,cat*(n*f=10.0 pctn=’%’*f=10.1) all=’Total’*(n*f=10.0 pctn=’%’*f=10.1) ; run ; où chaque variable (comme ici « sonf ») est traitée en fonction de la variable « cat ». Je voudrais à chaque fois récupérer le risque relatif (proc freq option cmh) et sous chaque tableau écrire : « Le risque relatif est : …. ». Comment […]

Macro : Éliminer les valeurs d’une liste1 existantes dans une liste2

Bonjour, J’ai 2 listes de variables liste1 et liste2 (2 macro variables) %let liste1= a b c ; %let liste2=(a f d) ; %let liste3=; Je souhaite comparer chaque variable de la liste1 avec toutes les variables de la liste2 pour constituer une liste3 excluant de la liste1 les variables figurant dans la liste2 (soit liste3=b c); Ci après le code que j’ai écris %do i=1 %to &n;    %if %scan(&liste1,&i) not in &liste2 %then %do;       %let liste3=liste3 %scan(&liste1,&i);    %end; %end; […]

Macro : Renommer l’ensemble des variables d’une table SAS

Comment faire pour renommer l’ensemble des variables d’une table SAS, surtout quand il y en a plus d’une centaine ?   Si vos variables ont des noms organisés en séquences, vous pouvez les renommer d’un seul coup avec cette écriture : DATA maTable ;    SET maTable (RENAME = (v3-v15 = x20-x32)) ; RUN ; Les variables s’appellent à l’origine v3, v4, v5, …, v15 et après renommage, x20, x21, …, x32. Sinon, vous pouvez construire une table SAS avec les […]

Macro : compiler un macro-programme

Bonjour. Je souhaiterais pouvoir livrer à un utilisateur un macro-programme compilé. Comment dois-je m’y prendre, et quelles manipulations doit-il effectuer de son côté pour l’utiliser ? Merci. Déclarer une bibliothèque sur ce répertoire. LIBNAME ma_macro « c:\temp » ; Déclarer à SAS qu’on veut y mettre des macros (ou qu’il y en a déjà là). OPTIONS MSTORED SASMSTORE = ma_macro ; Exécuter le macro-programme en modifiant sa PREMIERE ligne : %MACRO mon_macro_programme (parametre1, parametre2, …) / STORE ; … %MEND mon_macro_programme ; […]

Macro : Résolution de macro-variables

Bonjour. J’ai des problèmes avec le fonctionnement des macro-variables. Par exemple, si on a : %let mvn = 1 ; %let mvtab = total ; %let mvtab1 = mois ; &&mvtab&mvn -> &mvtab1 soit mois, là je comprends. Mais : &&&mvtab&mvn -> &&mvtab1 -> &mois dans mon esprit, mais non ! Pouvez-vous m’expliquer ?   Il y a 5 règles pour la transformation d’une chaîne de caractères contenant des &. Ce sont : 1) &mv1 ==> valeur de la macro-variable […]

Macro : Comparaison de macro-variables

Bonjour, je rencontre un problème après avoir initialiser SEUIL et ECARTY à l’aide de symput, la comparaison entre ces deux valeurs ne se fait pas correctement: &SEUIL.>&ECARTY. (en vérifiant avec des put dans le log, 10.4 est inférieur à 4.5987562 !!) La comparaison avec %SYSEVALF ne fonctionne pas non plus… Merci de votre réponse   Vous n’étiez pas loin d’une solution à votre problème avec %SYSEVALF. En effet, le problème vient du fait que les valeurs des macro-variables sont traitées […]

SAS/BASE : nombre de variables généré par une proc TRANSPOSE

La procédure suivante proc transpose data=infic prefix=cnt out=outfic; var nocnt; by client; run ; va générer cnt1 à cntn. Comment récupérer le nombre de variables générées (n) dans une étape data ? Merci.   Pour mettre ce nombre dans une macro-variable, voici un premier programme : DATA _NULL_ ;    SET outfic ;    ARRAY transpose cnt: ;    CALL SYMPUT (« nbNllesVar », DIM(transpose)) ;    STOP ; RUN ; Vous récupérez le nombre de variables créées par la procédure TRANSPOSE dans la macro-variable &nbNllesVar. […]

Macro : Utilisation d’une macro-variable dans un LIKE

Je voudrais utiliser dans un LIKE « %…% » la valeur d’une macro-variable à la place des … Le programme suivant ne fonctionne pas : %LET recherche = ar ; PROC PRINT DATA = sashelp.class ;    WHERE soc LIKE « %&recherche% » ; RUN ; Comment résoudre ce problème ?   Il faut masquer au macro-compilateur les deux %. Pour cela, on utilisera la macro-fonction %NRQUOTE, qui masque des caractères pendant la phase de résolution (transformation du programme par le macro-compilateur)… Le macro-compilateur n’est […]

Macro : Utiliser simultanément plusieurs catalogues SASMACR

J’ai des catalogues SASMACR de macro-programmes compilés dans plusieurs répertoires différents. Mais l’option SASMSTORE n’autorise qu’une seule bibliothèque. Comment utiliser tous mes catalogues SASMACR simultanément ?   On peut créer une seule bibliothèque qui en regroupe en fait plusieurs (depuis la version 8.0). On peut donc déclarer par ce biais plusieurs chemins pour plusieurs catalogues de macros… LIBNAME bib1 « … » ; LIBNAME bib2 « … » ; LIBNAME bibmac (bib1 bib2) ; option SASMSTORE = bibmac MSTORED ; SAS ira d’abord chercher […]

Macro : Arrêt du déroulement d’un macro-programme

J’aimerai savoir s’il est possible de faire s’arrêter le programme et annuler les éventuelles instructions suivant l’appel du MP (un sorte de break ), si une certaine condition est vérifiée. %if &Nberr=0 %then %do;     « arrêter tout » %end ; Si c’est possible comment faire ? Avec les versions de SAS antérieures à la 9, on ne peut traiter le problème qu’à « l’ancienne » avec un %GOTO vers un autre point du programme (après lequel on ne fera plus rien). %macro […]

Macro : Incrémenter une macro-variable

J’ai une macro-variable i à laquelle je voudrais ajouter 1. Quand j’écris %let i=&i+1 ; je n’obtiens pas le résultat recherché (j’ai 3+1 comme valeur de i au lieu de 4). Que faire ? Il ne faut pas perdre de vue qu’une macro-variable ne contient jamais QUE DU TEXTE. Alors quand on dit à SAS quelque chose comme %let i = &i + 1 ; pour lui ce ne sont que les caractères ‘+’ et ‘1’ ajoutés à la fin […]

Importation : comment lire une table *.ssd01 dans SAS V9 ?

Bonjour, J’ai besoin de lire une table SAS *.ssd01 (donc a priori créée en V6 Unix !) dans SAS v9 windows … est-ce possible ? je me perds dans l’aide en ligne ! Merci d’avance !   Si vous avez une licence SAS 8 ou 9 pour l’Unix sur lequel la table a été créée, normalement vous n’avez qu’à… LIBNAME fichier6 V6 ‘/user/chemin/rep’ ; LIBNAME fichier8 ‘/user/chemin/rep’ ; PROC COPY IN = fichier6 OUT = fichier8 ; RUN ; Autre […]

Macro : Utilisation des instructions cards et datalines dans un macro programme

Je souhaite générer des tables automatiquement avec un programme sas, mais impossible d’utiliser les fonctions cards et datalines ! Quelle est l’origine du problème et existe-t-il une astuce pour y remédier ? Merci d’avance. exemple de script : %macro essai; data table; input variable; cards; 1 2 3 ; run; %mend essai; %essai; ERROR: The macro ESSAI generated CARDS (data lines) for the DATA step, which could cause incorrect results. The DATA step and the macro will stop executing. NOTE: […]

Macro : créer des macro-variables à partir d’un fichier texte

Bonjour, J’essaie de récupérer des données d’un fichier texte dans des macro variables sans créer une table sas en dur en utilisant data _null_. En lançant la code sas ci-après, je n’ai pas de message d’erreur mais je ne sais pas comment récupérer les données dans 2 macro variables sans faire un call symput qui est plutot basé sur une table sas en dur. Exemple: Soit le fichier Essai.txt ayant la structure suivante: a, b Toto, lulu Code sas: data […]

Importation : rapatrier des données Business Object sous SAS

Bonjour, Je souhaiterai exploiter des données de BO sous SAS. Pour cela, je sauve mon .rep en .txt. Le séparateur est une tabulation. Est-il possible d’utiliser l’option « delimiter » avec ce type de séparateur ? Si oui, comment ?! Merci d’avance !   Dans l’instruction INFILE de l’étape Data, il faut préciser DELIMITER = « 09 »x qui représente une tabulation. Dans l’assistant d’import par fenêtres, il faut choisir DELIMITED FILE (*.*) comme type de fichier, puis dans l’écran suivant, après avoir indiqué […]

Importation : Récupération d’une date sous SAS depuis SPSS

Bonjour. J’importe dans SAS un fichier de données SPSS (via le format de transport .POR et la PROC CONVERT) mais les dates sous SAS ne sont pas affichables (il s’agit de nombres énormes). Que faire ?   En fait, les dates stockées dans SPSS sont exprimées en nombre de secondes depuis le 15 octobre 1582 (!). Il est donc nécessaire d’opérer dans SAS une conversion, avec une étape Data : dateSAS = DATEPART(dateSPSS + « 15oct1582:00:00:00″dt) – 1 ; FORMAT dateSAS […]

Importation : Dialogue SAS/Oracle

Comment puis-je récupérer dans SAS les données d’une base Oracle ?   Avant tout, il faut s’assurer que l’on possède le module ACCESS TO ORACLE. Sinon, il faudra exporter les données Oracle dans un format tiers (fichier plat, feuille Excel, …) puis les importer sous SAS. Si ACCESS TO ORACLE est sous licence, deux solutions : LIBNAME maBase ORACLE USER= »… » PASSWORD= »… » PATH= »… » ; ou bien PROC SQL ; CONNECT TO ORACLE (USER= »… » PASSWORD= »… » PATH= »… ») ; SELECT * FROM CONNECTION TO […]

Graphiques : Distinction de points par des symboles

Bonjour, J’ai fait une régression dans la laquelle on me demande de distinguer les points par des symboles selon leur type. Il s’agit de mesures faites dans deux endroits différents et qu’on a combiné. Dans la régression de l’ensemble des points, il faut par des symboles, distinguer le provenance des observations sur le graphique de la régression. Merci d’avance   S’il s’agit juste d’une représentation graphique, alors dans la procédure GPLOT, la syntaxe PLOT varY * varX = varGroupe ; […]

Graphiques : affichage de lettre grecque dans un label

Bonjour, je voudrais afficher dans un label, caractérisant l’axe des ordonnées d’une boxplot, la lettre grecque mu. Je pensais m’y prendre de la façon suivante: axis1 value=(h=1.5)    label=(h=1.5 « ^S={font_face=symbol}m ^S={} »)    offset=(1.5,1.5) length=100 pct; axis2 value=(h=1.5)……. Mais cela ne fonctionne pas, SAS n’interprète pas la police Symbol. Auriez-vous une solution? Merci Les ESCAPECHAR comme vous avez essayé ne fonctionnent que pour les titres gérés par l’ODS. Les axes sont gérés par SAS/GRAPH pour les procédures GPLOT, GCHART ou BOXPLOT. Il vaudrait […]

Graphiques : superposer des bâtons dans la proc GCHART

Bonjour, Je voudrais superposer des graphiques à partir de la proc GCHART mais provenant de table différentes (car années différentes) comment puis-je faire ? Merci de votre réponse   Tout d’abord, vous devez combiner en une seule les deux tables : GCHART n’accepte qu’une table en entrée. Si par « superposer », vous entendez « empiler des bâtons », alors il faut procéder de la manière suivante. DATA work.deux ;    SET table1 (IN=annee1) table2 (IN=annee2) ;    IF annee1 THEN annee = 2005 ;    IF […]

ODS : PDF et sauts de pages

Bonjour, je voulais savoir comment on peut avoir des tableaux et des graphiques sur la même feuille de sortie dans le format PDF. Merci d’avance.   Bonjour. Il suffit d’ajouter à votre instruction ODS PDF ouvrante l’option suivante : STARTPAGE = NO Les sorties de vos procédures (graphiques ou tableaux) se trouveront à la suite les unes des autres, sans sauts de pages.

Graphiques : changer l’ordre des boxplots

Bonjour, Dans mes boxplots obtenues, avec la procédure BOXPLOT, les variables quantitatives sont représentées en fonction d’une variable qualitative en 3 modalités. Comment faire pour mettre ces modalités dans un ordre précis ? Merci d’avance. Pour l’ordre des catégories, il suffit d’avoir trié la table dans l’ordre voulu. Par exemple : DATA work.shoes ;    SET sashelp.shoes (WHERE = (region IN: (« Africa », »Canada », »Western »))) ;    SELECT (region) ;       WHEN (« Canada ») ordre = 1 ;       WHEN (« Africa ») ordre = 2 ;       OTHERWISE   ordre = 3 […]

Graphiques : Titre du graphique dans la table des matières

Est -il possible lors d’une sortie HTML de changer dans le sommaire le nom du lien par défaut qui envoie sur un graphique ? Pour un histogramme le « contents » par défaut est « HBAR chart of nom variable de groupe« . Oui, en utilisant l’option DES = « texte » dans les instructions HBAR, VBAR, HBAR3D, VBAR3D et PIE / PIE3D. PROC GCHART DATA = sashelp.class ;    VBAR sex / SUMVAR = age TYPE = MEAN DES = « Moyenne d’âge par sexe » ; RUN […]

Graphiques : plusieurs graphiques par page dans ODS RTF

Comment mettre plusieurs graphiques par page dans un document provenant d’un ODS RTF?   Ajoutez à votre instruction ODS RTF l’option STARTPAGE = NEVER pour enchaîner vos graphiques. ODS RTF FILE = « … » STARTPAGE = NEVER ; PROC Gxxx … ; … RUN ; QUIT ; ODS RTF CLOSE ;

Graphiques : Caractères accentués dans un graphique

Par défaut, SAS ne transcrit pas correctement les caractères accentués dans les titres de mes graphiques (proc GPLOT, GCHART). Que faire ?   Selon la plateforme que vous utilisez, l’option graphique (GOPTION) KEYMAP, qui résoud le problème, aura une valeur différente. Le tableau ci-dessous vous donne les valeurs pour Windows et Unix/Linux… Plateforme / OS Instruction Windows GOPTION KEYMAP = winansi ; Unix / Linux GOPTION KEYMAP = sas8859 ;

Graphiques : Figer la taille d’un graphique

Comment puis-je choisir la taille de mon graphique généré par SAS/GRAPH ?   A l’aide de deux options graphiques (GOPTIONS) HSIZE et VSIZE. La première pour la largeur du graphique, la seconde pour sa hauteur. Exemple : GOPTIONS HSIZE = 10cm VSIZE = 15cm ; PROC G… ; etc… On peut aussi spécifier les tailles en pouces (« in » après le nombre) ou en points (« pt »).

Graphiques : Plusieurs courbes sur un seul graphique

Je voudrais faire cohabiter sur un même graphique plusieurs courbes. Je rédige ainsi une procédure GPLOT et j’obtiens… autant de graphiques que de courbes ! Que faire ? PROC GPLOT DATA = … ;   PLOT y1*x1 y2*x2 ; RUN ; QUIT ;   L’option OVERLAY permet de superposer les graphiques… Attention, par défaut, pas de légende (d’où l’astuce de désigner LEGEND1 qui n’existe pas, mais il va se débrouiller). Attention aussi aux axes qui seront ceux des premières variables citées […]

Performance : Gestion des index – compression

Bonjour, J’utilise de très grosses tables (plusieurs millions de lignes; entre 10 et 50 variables) que j’ai créées à partir de fichiers texte. Pour les variables caractères, c’est le nombre que j’ai précisé après $ qui a été pris en compte. Pour les champs numériques c’est Best12, quelle que soit la longueur que j’avais spécifiée. J’ai crée des index sur mes tables. Les temps d’accès sont relativement longs je trouve. Je pensais compresser mes tables. Comment m’assurer que mes tables […]

Formats : Format à partir d’une table

Bonjour, Je fais un format à partir d’une table sas, jusque-là pas de problème. Mon souci est lorsque j’applique ce format, pour les valeurs qu’il ne trouve pas il n’applique aucun format. Je voudrais ajouter dans mon format une ligne pour les « other » valeurs. Voilà mon pgm : data format.fmtDRCourt; set tdbprod.BaseCourtiers (keep=gc DR rename=(gc=start dr=label)); by start; type= »N »; /* N Numérique */ fmtname= »DRCOURT »; run; proc format lib=format cntlin = format.fmtDRCourt /*fmtlib*/; run;   Je vous propose la variante suivante. […]

Formats : créer un format pour une variable de format date

Bonjour, j’ai une variable date dans un fichier, et je souhaite faire la répartition en fonction de tranche gérées par un format que je crée… et je n’arrive pas à créer ce format (sans passer par le calcul du nombre de jours correspondants à ma date..) j’ai essayé ça : proc format; value anccrea    low- mdy(12,31,2002) = « 1- avant 01/2003 »    mdy(12,31,2002)-mdy(12,31,2004)= « 2- entre 2003 et 2004  »    mdy(12,31,2004)-high= « 3- depuis 2005  »    other = »??? »; run; et ça proc format; value […]

Format : Créer un label avec une apostrophe

Bonjour, Je souhaiterais créer un label pour une variable contenant une apostrophe. Mais, SAS prend cette apostrophe comme la fin du label : proc format; value $test ’10’ = ‘l’arbre’; run; Comment faire comprendre à SAS qu’il ne s’agit pas de la fin du label ? Merci Bonjour. Le plus simple pour résoudre votre problème est tout simplement d’écrire votre libellé entre guillemets doubles. Il n’y aura alors pas de confusion avec les apostrophes. Dans SAS, les guillemets doubles et […]

ODS : Procédure Tabulate, éliminations de lignes et colonnes inutiles ?

Bonjour, j’aurais voulu savoir comment manipuler les cellules de la sortie afin d’enlever les cellules (ou lignes) dont je n’ai pas besoin.   Bonjour. Les seuls moyens de masquer des lignes (ou des colonnes) entières de la procédure Tabulate sont : de filtrer les données en amont avec un WHERE d’utiliser un format pour associer les valeurs des valeurs des variables CLASS à ne pas afficher avec des valeurs manquantes (par défaut, la procédure Tabulate n’affiche pas les valeurs manquantes) […]

Formats : Remplacer les points par les virgules

Bonjour, J’ai généré 1 fichier pdf avec des proc tabulate. Comment faire pour remplacer les points par des virgules dans ma sortie? Merci.   Bonjour. PROC TABULATE DATA = … FORMAT = NUMX12.2 ; devrait faire l’affaire.

Formats : format français

Bonjour, Je voudrais obtenir mes résultats avec un format français, notamment pour remplacer tous les points par des virgules. Il me semble qu’il faut utiliser la fonction LOCALE= , mais je ne trouve pas la syntaxe exacte, ni où il faut la placer exactement dans un programme.   Bonjour. Pour obtenir des affichages « européens » avec une virgule en guise de séparateur décimal, on peut d’abord utiliser le format NUMXc.d avec, comme d’habitude dans un format, c le nombre total de […]

Formats : format pour comparer un groupe à l’ensemble de la population

Bonjour, Dans le cadre d’un travail sur le marché du logement, je souhaiterais comparer le comportement des moins de 35 ans au comportement de l’ensemble de la population. Pour cela, j’ai pensé à un format multilabel du type:    proc format;       value pop (multilabel) low-35= »35 ans et moins »       low-high/* ?? */= »tout le monde »;   run; mais si j’applique ce format dans une proc freq par exemple:    proc freq data=****;       table age;       format age pop.;   run; j’obtiens bien les 35 […]

Formats : Affichage des nombres avec un séparateur de milliers

Existe -t-il un format SAS numérique qui ajoute un séparateur de milliers ? par exemple : 1350 devient 1 350   Oui, à partir de SAS 9 il y a le format NLNUM. Vous pouvez aussi le créer facilement avec ce petit programme : PROC FORMAT ;    PICTURE milliers (ROUND)       0 – HIGH = « 000 000 009″    ; RUN ; Vous utilisez ensuite le format milliers. quand vous en avez besoin. Pour plus d’informations sur les formats « picture », voir Les […]

Exportation : Insertion lignes dans Excel

Bonjour, je crée un classeur EXCEL avec plusieurs onglets en utilisant « tagsets.excelXP ». Je souhaiterais que dans chaque onglet, la 1ère ligne contienne un titre qui précise le contenu de l’onglet. Sauriez-vous comment obtenir ce type de résultat. Merci d’avance PS. L’instruction « title » colle le titre en entête de page pour l’impression, mais pas dans les lignes du classeur.   Bonjour. Il existe deux autres options pour répondre à votre besoin : pour que les titres des instructions TITLE apparaissent en […]

ODS : Titres très longs dans ODS RTF

Bonjour, je fais un tableau avec une PROC REPORT dans un fichier RTF. Je voudrais que mes titres de colonnes soient écrits verticalement et non horizontalement (il sont très longs). J’ai vu qu’on arrivait à ce résultat dans une sortie HTML en ajoutant style(header)={htmlstyle= »mso-rotate:90″} Mais ça ne marche pas sur une sortie RTF. Auriez-vous une idée sur la manière d’obtenir ce résultat ? Merci d’avance. Bonjour. Si vous voulez éviter d’avoir sur une ligne des titres trop longs, vous pouvez […]

Exportation : Récupérer le nom des variables d’une table dans une table

Bonjour , je souhaite avoir pour première observation dans ma table le nom des variables de cette même table. Existe-t’il une solution ? Merci beaucoup.   Bonjour. Il n’est pas forcément simple de répondre à votre question, car on va se heurter à un problème de type des variables : si elles sont toutes caractère, pas de souci, il suffit de récupérer les noms via une proc Contents dans une table SAS avec l’option OUT=, puis de transposer (proc Transpose) […]

Exportation : centrer les données d’un tableau Excel en SAS

Bonjour, j’ai réussi à générer un fichier Excel en SAS mais je n’arrive pas à le mettre en forme grâce à des feuilles de style. En effet je souhaiterai que les données de mon tableau Excel apparaissent centrées et non alignées à gauche comme le fait Excel par défaut. Si on génére un fichier HTML, les données arrivent parfaitement à être centrées. Or, sur Excel cela ne marche pas !!! Voici mon code : proc template;   define style styles.noborder;     parent=styles.minimal; […]

Exportation : Exporter 2 tables SAS vers un même fichier Excel

Bonjour, Je voudrais savoir s’il est possible d’exporter 2 tables sas toto1 et toto2 vers un même fichier Excel toto où toto1 serait le 1er onglet et toto2 le 2ème ??? Merci.   En SAS v9, pas de problème : il y a une instruction SHEET= dans la proc EXPORT pour indiquer dans quelle feuille du classeur Excel on veut écrire. Il suffit d’avoir une licence SAS ACCESS TO PC FILES et une session SAS PC. En SAS v8, c’est […]

Exportation : résultats SAS directement dans Excel

Bonjour, J’ai de nombreuses sorties sas que je souhaite produire dans des fichiers Excel. De la même manière que l’instruction « ods rtf » permet de générer des sorties lisibles par Word, existe-t-il un moyen de les rendre lisible par Excel ? Merci de votre réponse.   Bonjour. Pour écrire des résultats SAS dans Excel, vous avez deux solutions : pour toutes versions de SAS depuis la 8.0, vous pouvez ouvrir une destination ODS HTML sur le même principe qu’ODS […]

Exportation : Liaison DDE SAS/Excel

Je cherche à exporter 78 variables d’une table SAS vers un fichier Excel à l’aide d’une liaison DDE. Les observations sont des nombres décimaux possédant 11 caractères dont 10 décimales (par exemple 0.6612903226). Le programme SAS (ci-dessous) lui indique bien d’exporter 78 variables sur un espace de 78 cellules. filename sortie DDE « excel|Feuil1!l1c2:l1c79 » notab; DATA _null_; SET pgm; FILE sortie; PUT COL1 ’09’x COL2 ’09’x COL3 ’09’x COL4 ’09’x COL5 ’09’x COL6 ’09’x COL7 ’09’x COL8 ’09’x COL9 ’09’x COL10 […]

Exportation : export sous Excel

Bonjour, Pouvez-vous me dire s’il existe une macro ou procédure qui exporte une table en fichier excel (97) directement? Merci d’avance pour votre précieuse réponse. Bonjour. Si vous possédez SAS version 8 ou 9, c’est très simple : ODS HTML FILE = « chemin et nom de votre fichier.xls » ; TITLE ; FOOTNOTE ; PROC PRINT DATA = votre_table LABEL NOOBS ; RUN ; ODS HTML CLOSE ; Vous obtiendrez ainsi une pseudo feuille Excel (en fait, c’est une page Web […]

Exportation : Largeur de page HTML

Je produis avec ODS HTML des pages Web que je désire ensuite pouvoir imprimer. Mais les tableaux produits sont trop larges, et l’ODS HTML ne tient pas compte de l’option LINESIZE (LS) pour dimensionner les tableaux… Que faire ?   Malheureusement, le HTML est un langage sourd aux considérations bassement matérielles d’impression. Je ne connais aucun moyen, depuis SAS, pour le forcer à respecter des largeurs de pages données, puisque dans un navigateur Internet, on a toujours la possibilité d’un […]

Exportation : Sorties SAS dans Excel

J’essaye d’ouvrir dans Excel un tableau généré par SAS dans une page Web (ODS HTML). Les cases de mon tableau sont comprises par Excel comme des chaînes de caractères ! Comme corriger ce problème ?   Par ailleurs, concernant l’envoi des tableaux HTML sous Excel, votre problème tient à un paramètre gênant : votre Excel est en Français, avec des virgules comme séparateur décimal. Or SAS, logiciel américain, utilise le point. Donc les points présents dans les cases des tableaux […]

Enterprise Miner : Valeurs manquantes

Dans Enterprise Miner, comment sont gérées les variables manquantes ?   Généralement (sauf dans le noeud « Arbre de Décision »), les observations comportant au moins une valeur manquante sont exclues de l’analyse. On peut choisir de les compléter au préalable avec le nœud Replacement, ou avec un nœud SAS Code faisant appel à la PROC MI. Dans le nœud Arbre de Décision, on peut utiliser la valeur manquante comme une valeur à part entière, ou exclure les observations incomplètes comme dans […]

Enterprise Miner : Structure des réseaux de neurones

Les réseaux de neurones de SEM comprennent-ils toujours une seule couche cachée ?   On peut forcer le nombre de couches cachées, pour cela il faut aller dans l’interface avancée (cocher ADVANCED USER INTERFACE dans l’onglet GENERAL) et cliquer droit n’importe où : on a la fonctionnalité ADD HIDDEN LAYER qui doit être disponible. Relier comme on le souhaite les couches.

Enterprise Miner : Sélection de variables avec le Chi-2

Je me pose des questions sur la sélection de variables sous SEM : en effet le test du chi-deux proposé ne semble pas correspondre au test du chi-deux sous SAS (PROC FREQ avec option CHISQ). Qu’en est-il vraiment? je suis allée voir ce que faisait SEM dans le Program Editor et il fait une PROC DMSPLIT : qu’est-ce que c’est que cette PROC ? Dans quel module est-elle disponible ?   En fait, le nœud VARIABLE SELECTION construit un arbre […]

Régression logistique : Équilibre populations, échantillons et application du modèle

Suite à une modélisation de variable binaire, j’utilise la PROC LOGISTIC de SAS 8.2. – Pour espérer obtenir de meilleurs résultats, faut-il équilibrer ma population de clients et de non clients? Exemple: expliquer une situation Y=1 alors que 80% de la population étudiée a Y=1, donne-t-il un poids trop important à ce groupe de clients ? – L’équilibre doit-il se faire dans l’échantillon d’apprentissage (70% de la population totale) sans s’en occuper dans l’échantillon test? – Après avoir obtenu les […]

Enterprise Miner : Prise en compte des formats (modèle LOGIT)

Bonjour, Sous EM, le modele LOGIT prend-t-il en compte les formats ou doit-on recoder en dur les modalités ?   A priori, si un format est attaché de manière permanente à la variable, SEM le prend en compte dans tout son diagramme. Pour le vérifier, vous pouvez aller dans le nœud INPUT DATA SOURCE, et faire un VIEW DISTRIBUTION de votre variable formatée. Si les catégories affichées correspondent au format, le nœud REGRESSION en tiendra compte. Sinon, vous devez coder […]

Enterprise Miner : Paramétrage du noeud Input Data Source

Bonjour, Dans SEM, et plus précisément dans le noeud Input Data Source, est-il possible d’enregistrer le paramétrage (notamment « Model role » et « Measurement »), puis de l’appliquer sur une nouvelle table (ou une mise à jour de la table) sans avoir à tout redéfinir? J’ai une table de départ de plus de 400 variables et j’essaie d’éviter de tout redéfinir à chaque nouvelle version de la table. Merci d’avance.   Il existe la possibilité de cloner le noeud Input Data Source (IDS). […]