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 13/04/2011, 11h42   #1
Invité de passage
 
Femme
Étudiant
Inscription : avril 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : avril 2011
Messages : 3
Points : 0
Points : 0
Par défaut Incrémenter variables automatiquement

Bonjour,

Voici mon problème :
J'ai une variable id_pat (identifiant unique du patient) et une variable numsej (numéro du séjour). Un même id_pat a plusieurs numsej (jusqu'à 25).
Je voudrais avoir une ligne par id_pat et créer les variables numsej1, numsej2, ... numsej25 pour avoir tous les numsej d'un même patient sur la même ligne.

Je pensais faire ça en répétant 25 fois cette instruction (en adaptant la numérotation)
Code :
1
2
3
4
5
DATA fic;
SET fic;
BY id_pat;
IF lag(id_pat)=id_pat then numsej2=lag(numlag);
run;
mais c'est assez fastidieux ! Je voulais donc savoir s'il existait un moyen, avec un boucle par exemple, de créer automatiquement ces variables en une étape, avec quelque chose de ce genre :
Code :
1
2
i=[1-24]
IF lagi(id_pat)=id_pat then numsej(i+1)=lagi(numlag);
Merci d'avance pour votre aide.
Ankhsounamon31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 11h51   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
si tu transposes ta table en bloquant Id_pat en ligne et en basculant donc les num_sej ca ne t'aiderait pas ?
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 12h01   #3
Invité de passage
 
Femme
Étudiant
Inscription : avril 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : avril 2011
Messages : 3
Points : 0
Points : 0
Oui je pense. Comment fait-on ça ?
Ankhsounamon31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 12h15   #4
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
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 : 956
Points : 1 366
Points : 1 366
Citation:
Envoyé par Ankhsounamon31 Voir le message
Oui je pense. Comment fait-on ça ?
Comme Stéphane t'a proposé, une proc transpose suffit:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DATA TEST;
INPUT id_pat $ numsej ;
CARDS;
patient1 81
patient1 82
patient1 83
patient1 84
patient1 85
patient2 91
patient2 92
patient2 93
patient2 94
;
RUN;
 
proc transpose DATA=test out=transpose(DROP=_name_) prefix=numsej ;
var numsej;
BY id_pat;
run;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 12h31   #5
Invité de passage
 
Femme
Étudiant
Inscription : avril 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : avril 2011
Messages : 3
Points : 0
Points : 0
Merci pour ton aide.
Je viens de faire ton exemple et c'est tout à fait ce que je voulais faire.
Je vais le transposer à mes données.

Merci à tous !
Ankhsounamon31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 12h34   #6
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
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 : 956
Points : 1 366
Points : 1 366


Bon courage!
MEGAMIND2 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 02h23.


 
 
 
 
Partenaires

Hébergement Web