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 06/05/2011, 12h53   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 75
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : avril 2011
Messages : 75
Points : 11
Points : 11
Par défaut mettre toute les modalités de différentes variables dans une méme colonne

Bonjour,

je cherche à sommer les différentes modalités de plusieurs variables dans une et une seule colonne afin d'améliorer la lisibilité de mon fichier, mais là je galére un peu pour trouver une solution, quelqu'un aurait une idée de la démarche à suivre.

je vous envoie en lien un petit fichier pour mieux comprendre ce que je cherche à faire

merci
Fichiers attachés
Type de fichier : xls comparaison_significatif.xls (17,7 Ko, 10 affichages)
antoine2933 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 13h58   #2
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
Je n'arrive pas à comprendre avec le fichier, tu peux être plus explicite encore...
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 14h04   #3
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 75
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : avril 2011
Messages : 75
Points : 11
Points : 11
dans le fichier la première colonne correspond à mes attentes.

les autres colonnes sont obtenus en réalisant une proc tabulate mais au lieu que les différentes modalités soient listées dans une même colonne elle se sont découpé en fonction des variables auxquelles elles appartenait. j'aimerais trouver une façon de les réunir sous une seule et même colonne avant de sortir les résultats sous Excel.
antoine2933 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 14h11   #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
C'est facile, tu rajoutes une colonne supplémentaire qui est la concaténation des trois colonnes B, C et D
Code :
nouvelle_colonne=COMPRESS(B!!C!!D)
et dans ta proc tabulate, tu remplaces les 3 variable par une seule (nouvelle_colonne).
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 14h21   #5
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 75
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : avril 2011
Messages : 75
Points : 11
Points : 11
merci sa marche bien il y a juste un problème au lieu de m'afficher les label correspondant il m'affiche le numéro de la modalité
antoine2933 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 14h25   #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
Citation:
Envoyé par antoine2933 Voir le message
merci sa marche bien il y a juste un problème au lieu de m'afficher les label correspondant il m'affiche le numéro de la modalité
Je peux voir le résultat? je ne comprends pas
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 14h47   #7
Membre éclairé
 
Homme
statisticien
Inscription : mai 2011
Messages : 212
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 : 212
Points : 319
Points : 319
si tu as des formats c'est normal essaye avec

Code :
nouvelle_colonne=compress(put(A,$formatA.)!!put(B,$formatB.)!!put(C,$formatC.));
avec $formatA le format de A , $formatB le format de B etc... si c'est des variables caractère...
jerome_pdv2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 15h05   #8
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : avril 2011
Messages : 75
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Service public

Informations forums :
Inscription : avril 2011
Messages : 75
Points : 11
Points : 11
en piéce jointe je te donne le résultat obtenu megamind. l'histoire du format ne fonctionne pas je n'en ai pas.
Fichiers attachés
Type de fichier : xls comparaison_significatif.xls (17,0 Ko, 7 affichages)
antoine2933 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 16h05   #9
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
Utilises la proc format pour recoder les modalité de ta nouvelle variable comme suit:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PROC FORMAT;
VALUE   fsex $
 M='HOMME'
 F='FEMME';
RUN;
 
DATA test;
SET Sashelp.Class;
Sexe2=put(sex,fsex.);
run;
 
 
PROC TABULATE DATA=test ;
CLASS Sexe2 ;
VAR age;
TABLE Sexe2="Sex",age*sum="";
RUN;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 17h23   #10
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
personnellement je partirais sur

Code :
1
2
3
4
5
6
7
IF A ne .
then nouvelle_colonne=put(A,$formatA.);
else IF B ne .
then nouvelle_colonne=put(B,$formatB.);
else IF C ne .
then nouvelle_colonne=put(C,$formatC.);
else nouvelle_colonne=".";
au lieu de

Code :
nouvelle_colonne=compress(put(A,$formatA.)!!put(B,$formatB.)!!put(C,$formatC.));
Ca évite les .
Tu peux même faire mieux qu'avec les if, en utilisant un select when.

Manoutz
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 18h25   #11
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
Je ne comprends pas Manoutz, tu veux éviter les valeurs à point et tu mets ceci
Code :
else nouvelle_colonne=".";
Le mieux serait de remplacer des valeurs à . par des blancs avant de concaténer
et appliquer la proc format par la suite ou des If, enfin c'est mon avis!
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 22h55   #12
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Le dernier else est une solution "au cas où". Supposons que l'exemple fourni par antoine soit non exhaustif (c'est à dire qu'on rentre dans un cas ou A et B et C est vide). Le but dernier "else" est de considérer ce cas de figure, mais j'aurais pu l'affecter à "." comme "Non attribué", ou autre. Toujours est-il que c'est un cas à traiter et il faut être capable de les détecter pour voir si ces cas de figure se présentent.

C'est vrai, on peut formater les valeurs à . par une valeur vide, mais s'orienter vers cette solution peut être vue comme une pratique consistant à masquer le problème, sans le corriger (sans les formats, ta variable nouvelle_colonne est plus longue). C'est tout le danger, d'une manière plus générale, de la représentation visuelle: l'oeil ne voit pas tout! Quoiqu'il en soit, les deux solutions devraient fournir l'apparence escomptée dans ce cas, donc au final, on devrait être bon tout les deux.
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h09.


 
 
 
 
Partenaires

Hébergement Web