Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/12/2011, 12h17   #1
Invité régulier
 
Femme
Responsable marketing opérationnel
Inscription : avril 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Responsable marketing opérationnel
Secteur : Biens de consommation

Informations forums :
Inscription : avril 2011
Messages : 16
Points : 8
Points : 8
Par défaut Liste des modalités d'une variable : grosse table

Bonjour,

je souhaite récupérer la liste des modalités d'une variable de ma table SAS. Comment faire pour que ce traitement soit court sachant que la table sur laquelle je travaille est énorme?

Merci de votre aide.

Olive.
Olive2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 12h28   #2
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 957
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 957
Points : 1 368
Points : 1 368
Bonjour,

Tu peux être plus explicite ?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 12h37   #3
Invité régulier
 
Femme
Responsable marketing opérationnel
Inscription : avril 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Responsable marketing opérationnel
Secteur : Biens de consommation

Informations forums :
Inscription : avril 2011
Messages : 16
Points : 8
Points : 8
Bien entendu!

Ma table est énorme (20 Go) et contient le fruit de l'observation de la variable TOTO sur l'ensemble d'une population. Le fournisseur de cette table ne m'a pas donné la liste des modalités de la variable TOTO, à moi d'en faire une liste.

Ce que j'aimerais, c'est récupérer une table du style:
modalité1
modalité2
modalité3....
Je n'ai pas besoin de comptage, juste des noms des modalités.

Quelle est la méthode la moins gourmande en temps?

Merci!
Olive2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 13h06   #4
Membre du Club
 
Homme Jérémy Noël
Consultant Support Client SAS
Inscription : mai 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Jérémy Noël
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant Support Client SAS
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 38
Points : 58
Points : 58
Bonjour,

Une méthode me vient à l'esprit mais je ne pense pas que ce soit la moins gourmande:

Code :
1
2
3
4
5
6
7
8
9
Proc sort DATA=entree;
BY toto;
run;
 
DATA final;
SET entree;
BY toto;
IF first.toto;
run;
Voilà un exemple devant fonctionner mais le tri pourrait prendre du temps.

Cordialement,
Frajen
frajen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 13h26   #5
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 957
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 957
Points : 1 368
Points : 1 368
Moi je dirais qu'une proc freq est adaptée pour ça,
Un exemple:

Code :
1
2
3
proc freq DATA=sashelp.Air;
TABLES DATE/out=sortie;
run;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/12/2011, 13h47   #6
Membre éclairé
 
Homme
statisticien
Inscription : mai 2011
Messages : 213
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : statisticien
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2011
Messages : 213
Points : 319
Points : 319
Si tu as vraiment beaucoup de modalités (par exemple il m'arrive de devoir faire des listes de modalités sur de grosses tables et pour laquelle j'ai énormément de modalités, c'est à dire plusieurs millions voir dizaines de millions de modalités)

alors je te recommande la proc summary

Code :
1
2
3
4
5
6
7
8
9
 
DATA cpte_mod; SET sashepl.air;keep date w;w=1;run;
 
PROC SUMMARY DATA=cpte_mod;
CLASS DATE;
VAR w;
TYPES CLASS;
OUTPUT OUT=sortie sum=;
run;
Chez moi la freq bloque passé un certain nombre de modalités, sinon la freq fait généralement bien son travail à condition de ne pas omettre l'option noprint de la freq si tu as vraiment beaucoup de modalités.
jerome_pdv2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 13h55   #7
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
Citation:
Envoyé par frajen Voir le message
Bonjour,

Une méthode me vient à l'esprit mais je ne pense pas que ce soit la moins gourmande:

Code :
1
2
3
4
5
6
7
8
9
Proc sort DATA=entree;
BY toto;
run;
 
DATA final;
SET entree;
BY toto;
IF first.toto;
run;
Voilà un exemple devant fonctionner mais le tri pourrait prendre du temps.

Cordialement,
Frajen
Tu peux faire encore plus court
Code :
1
2
3
4
 
proc sort DATA=entree out=entree_(keep=toto) nodupkey; 
BY toto;
run;
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/12/2011, 13h58   #8
Invité régulier
 
Femme
Responsable marketing opérationnel
Inscription : avril 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Responsable marketing opérationnel
Secteur : Biens de consommation

Informations forums :
Inscription : avril 2011
Messages : 16
Points : 8
Points : 8
Merci à tous!

j'étais effectivement partie sur une PROC FREQ, mais je pensais que peut-être il pouvait y avoir une meilleure méthode. Je vais comparer avec la PROC SUMMARY pour voir ce qui est le mieux. Par contre, je ne pense pas me lancer dans la PROC SORT...

Olive.
Olive2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 14h01   #9
Membre Expert
 
Inscription : mars 2005
Messages : 1 011
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 011
Points : 1 259
Points : 1 259
Envoyer un message via Yahoo à bahraoui
Tu peux utiliser la proc SQL; tu nous diras la plus performante

Code :
1
2
3
4
5
6
 
proc sql;
CREATE TABLE res AS
SELECT DISTINCT toto AS mod
FROM ma_table (keep=toto);
quit;
__________________
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 14h06   #10
Membre éclairé
 
Homme
statisticien
Inscription : mai 2011
Messages : 213
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : statisticien
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2011
Messages : 213
Points : 319
Points : 319
Citation:
Envoyé par bahraoui Voir le message
Tu peux faire encore plus court
Code :
1
2
3
4
 
proc sort DATA=entree out=entree_(keep=toto) nodupkey; 
BY toto;
run;
Je pense que c'est encore la solution la plus courte et peut-être la plus performante, surtout si tu n'as pas besoin de compter le nombre d'occurence de chaque modalité.

Moi c'est souvent le cas c'est pourquoi j'utilise la freq , la summary ou une étape data après un sort si la summary "calle" (ça m'est arrivé ).

Sinon tu as encore la piste de la SQL
jerome_pdv2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h27.


 
 
 
 
Partenaires

Hébergement Web