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 31/08/2011, 06h40   #1
Invité de passage
 
joelle edith
Inscription : octobre 2009
Messages : 10
Détails du profil
Informations personnelles :
Nom : joelle edith

Informations forums :
Inscription : octobre 2009
Messages : 10
Points : 2
Points : 2
Par défaut Comment faire l'equivalent d'une "Recherchev" sous SAS?

Bonjour a tous !

Je sollicite votre aide aujourd'hui sur un probleme qui me semble cornelien.

En effet, j'ai une table SAS (appellons-la table A) de plus de deux millions de lignes (donc impossible de l'exporter sous ma version excel 2003 !) qui comporte parmi ses variables une variable "age".

J'ai une autre table (appellons-la table B) qui comporte deux colonnes : "age" (lignes de 1 a 100) et "montants".

Ce que j'aimerais faire, c'est :

1) pour chaque age de la table A, rechercher la valeur de la variable "montants" dans la table B;
2) Afficher cette valeur dans une variable dans la table A.

Merci d'avance pour toutes vos suggestions.

PS : Desolee pour les accents et autres j'utilise un QWERTY ....
edjo123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 07h44   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Bonjour Joelle.
Il y a de nombreuses solutions à ta question, par exemple en faisant des jointures (MERGE, SQL, table de hash, double SET et index) : il y a pas mal de posts sur le sujet. Mais si tu n'as qu'une info à ramener de ta petite table, le plus simple à mes yeux et le plus efficace en temps de traitement est de créer un format à partir de la petite table, et de ne l'appliquer qu'à mesure des besoins dans la grande table.
Code :
1
2
3
4
5
6
7
8
9
DATA work.montants ;
  SET B ;
  fmtname = "montant" ; /* nom du format créé sans le . final */
  type = "N" ; /* format numérique */
  start = age ; /* valeur présente dans la grosse table */
  label = montant ; /* valeur renvoyée par le format quand il y a correspondance d'âge */
RUN ;
PROC FORMAT CNTLIN=work.montants ;
RUN ;
Pour créer la variable MONTANT de manière permanente dans la grosse table, tu fais une étape DATA comme ceci :
Code :
1
2
3
4
DATA work.a_avec_montant ;
  SET A ;
  montant = PUT(age, montant.) + 0 ;
RUN ;
Le + 0 est une garantie de créer une variable numérique, sinon PUT va vouloir créer du texte.

Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h32.


 
 
 
 
Partenaires

Hébergement Web