Précédent   Forum du club des développeurs et IT Pro > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/02/2013, 13h49   #1
pix33
Invité de passage
 
Homme
Chargé d'études statistiques
Inscription : novembre 2011
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'études statistiques
Secteur : Services de proximité

Informations forums :
Inscription : novembre 2011
Messages : 19
Points : 1
Points : 1
Par défaut Application de formats à une table entière

Bonjour,

J'ai cherchésur le forum pour trouver une réponse à mon problème mais en vain.

J'importe sous SAS des fichiers .txt dans lesquels sont stockés les formats de mes variables. Je procède de la façon suivante:
Code :
1
2
3
4
5
proc format ;
%include "X:\Antoine\17102012d\INCLUSION\SAS_Category.txt";
%include "X:\Antoine\17102012d\VISITE1\SAS_Category.txt";
...
run;
Mes catalogues de format sont alors stockés dans la work. Pour appliquer ces formats à mes variables j'utilise le code suivant (ici pour ma table inclusion) :
Code :
1
2
3
4
DATA Inclusion; SET Inclusion;
format CENTER center. INVEST  INVEST. SEX SEX.  
...
run;
Je voulais savoir s'il existait une commande pour appliquer d'un coup les formats à toutes les variables de ma table et ne pas avoir à remettre chaque fois le nom de la variable (ex: Center center. etc). J'ai énormément de tables et de variables différentes et cette étape me prend pas mal de temps.

Merci par avance
pix33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 16h57   #2
jmarandet
Membre du Club
 
Homme julien marandet
Ingénieur Statisticien
Inscription : janvier 2013
Messages : 28
Détails du profil
Informations personnelles :
Nom : Homme julien marandet
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur Statisticien
Secteur : Service public

Informations forums :
Inscription : janvier 2013
Messages : 28
Points : 54
Points : 54
Bonjour pix33,

S'il en existe je ne la connait pas, mais vous pouvez construire vous même votre fonction qui réponde à votre besoin.

Si vous savez que chaque variable dispose d'un format numérique du même nom, alors une macro comme celle-ci peut déjà vous faciliter la tâche :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
%macro mesformats(lvar);
	%global mesformats;
	%let mesformats=format ;
	%let v=1;
	%do %while(%scan(&lvar,&v,|) ne);
		%let mesformats=&mesformats. %scan(&lvar,&v,|) %scan(&lvar,&v,|).;
		%let v=%eval(&v+1);
	%end;
	&mesformats;
%mend mesformats;
DATA inclusions;
%mesformats(center|invest|sex);
SET inclusions;
run;
Après... libre à vous d'enrichir le code de cette macro pour vous adapter plus particulièrement à la logique de votre projet...
Par exemple en faisant une autre liste pour les formats caractères.
Ou mieux en générant automatiquement la liste de vos variables à partir de la table SASHELP.VCOLUMN (un petit SELECT name INTO :lvar SEPARATED BY bien placé ?) ...
jmarandet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/02/2013, 17h11   #3
pix33
Invité de passage
 
Homme
Chargé d'études statistiques
Inscription : novembre 2011
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'études statistiques
Secteur : Services de proximité

Informations forums :
Inscription : novembre 2011
Messages : 19
Points : 1
Points : 1
Merci pour cette réponse rapide!!

Je pensais également qu'il n'existait pas de telle fonction (enfin j'espérais quand même).
Je n'avais pas pensé réaliser ce code, c'est très utile je trouve. Et dans mon projet l'application des formats ne concerne que des variables catégorielles (donc numériques) du même nom. Je vais donc ramener la liste des variables de chaque table par une petite proc sql comme tu l'as suggéré.

En tout cas merci de ton aide, je vais réussi à gagner du temps je pense.
pix33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h43.


 
 
 
 
Partenaires

Hébergement Web