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, 14h33   #1
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
Par défaut Récupération de donnés nulles

Bonjour,
voilà je vous expose mon PB:
j'ai une table sortie:

COMMUNE DCRAN IPANDI
63001 63002 2
63002 63002 4
63002 63002 6
60002 63003 3
63003
63003
...
j'ai fait un petit programme pour que je puisse avoir pour chaque commune comme il y en a qui sont venue d'une commune DCRAN.
dans commune et dcran contient des codes postaux.

donc avec mon programme j'obtient le résultat suivant:

63001 99999 1
63003 99999 6
63004 99999 4
Code :
1
2
3
4
5
proc sql;
CREATE TABLE arrivant_comm AS
SELECT DISTINCT COMMUNE,DCRAN,count(DCRAN) AS etranger
FROM sortie WHERE DCRAN ='99999'GROUP BY COMMUNE;
quit;
MON probleme:
1) je veux pouvoir faire ça au niveau de tous les DCRAN que j'ai dans mon fichier(sans avoir à chaque fois à changer le code postale moi même dans mon code!)

2) si vous remarquez pour le commune 63002 vu qu'il y a 0 personne qui sont venu de l'etranger, il ne m'affiche rien!! je veux qu'il m'affiche même les communes avec un 0.

voilà

Merci encore pour votre aide et vos réponses
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 14h56   #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'ai rien compris de tes explications et je ne vois pas de DCRAN=99999 dans ta table.
Bref tu peux déjà convertir ta variable en numéric ( input(var,best.)) si c'est pas encore fait et tu remplaces des valeurs manquantes par zero et ça devait marcher
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h00   #3
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
le DCRAN=99999 : c pour avoir toutes les personnes ayant un code postale 99999(etranger) pour chaque commune .
le probeleme est que je dois avoir les chiffres pour chaque code postale de DCRAN.
j'aimerais avoir quel est le moyen de le faire d'un seul coup.
juste pour péciser le résultat que j'ai pour l'instant:

COMMUNE DCRAN nb-etranger
63001 99999 6
63003 99999 3
63004 99999 1

voilà
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h04   #4
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
Avec ce code tu auras le nombre de personne par commune et dcran
Code :
1
2
3
4
5
6
7
 
proc sql;
CREATE TABLE arrivant_comm AS
SELECT DISTINCT COMMUNE,DCRAN,count(*) AS etranger
FROM sortie
GROUP BY COMMUNE,DCRAN;
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 13/04/2011, 15h04   #5
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 debutsas Voir le message
le DCRAN=99999 : c pour avoir toutes les personnes ayant un code postale 99999(etranger) pour chaque commune .(j'ai pris ça à titre d'exmple)
le probleme est que je dois avoir les chiffres pour chaque code postale de DCRAN.
j'aimerais avoir quel est le moyen de le faire d'un seul coup.
Il faut passer par des macros et je t'ai posé la question tout à l'heure si tu voulais automatiser.
Tu veux donc une table par code postale c'est ça? si oui, joins un échantillon de ton fichier et je pourrias t'aider
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h16   #6
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
oui je veux automatiser ça:
j'ai mis en piece jointe un tout petit extarit de mon fichier.
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h27   #7
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
Citation:
Envoyé par bahraoui Voir le message
Avec ce code tu auras le nombre de personne par commune et dcran
Code :
1
2
3
4
5
6
7
 
proc sql;
CREATE TABLE arrivant_comm AS
SELECT DISTINCT COMMUNE,DCRAN,count(*) AS etranger
FROM sortie
GROUP BY COMMUNE,DCRAN;
quit;
ta méthode bahraoui marche bien.mais ça me complique ma tache par la suite.
j'aimerais donc avoir un resultat plutôt comme ça:

COMMUNE viennent de 63001 viennent de 63002 ....viennent de 99999
63001 3 1 2
63002 5 2 0
63003
...

et que ça m'affiche 0 aussi si jmais il n'y a personne qui a migré de cette commune.

je sais pas si j'i bien expliqué.
Sinon je dois faire plusieurs petit code en changant à chaque fois le code posatle.
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h32   #8
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
je ne comprends pas bien ce que tu veux bien faire.
est ce que tu peux nous donner 2 ou 3 exemples?
__________________
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 13/04/2011, 15h38   #9
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
avec ta méthode bahraoui, j'ai un resultat comme ça:

commune DCRAN migrants

63001 00001 1
... ... .....
63001 99999 9

63002 00001 1
... ... .....
63002 99999 9

63003 00001 1
... ... .....
63003 99999 9
..
mais je veux un résultat plutôt de ce type:

COMMUNE viennent de 63001 viennent de 63002 .... viennent de 99999
63001 3 1 2
63002 5 2 0
63003 10 6 2
...
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h50   #10
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
j'ai utilisé ton fichier excel.
j'espère que ça répond à ton besoin
Citation:
data test;
input COMMUNE DCRAN;
cards;
63001 3030
63001 3059
63001 3071
63001 3071
63001 3094
63001 3104
63001 3109
63001 3118
63001 3118
63001 3118
63001 3118
63001 3271
63001 3310
63001 13103
63001 15187
63001 30107
63001 30107
63001 40243
63001 41262
63001 42218
63001 42218
63001 42218
63001 43157
63001 44109
63001 45247
63001 57630
63001 58095
63001 59426
63001 59426
63001 59525
63001 59572
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63001 63001
63113
63040 63113
63040 63113
63040 63113
63040 63113
63040 63113
63040 63113
63040 63113
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63040 63124
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
63113 63113
;
run;

proc freq data=test noprint;
tables COMMUNE*DCRAN/ out=res;
run;
proc transpose data=res prefix=commun_ out=tran(where=(_NAME_="COUNT") drop=_LABEL_ );
by COMMUNE;
id dcran;
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 00
Vieux 13/04/2011, 15h51   #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
Citation:
Envoyé par debutsas Voir le message
avec ta méthode bahraoui, j'ai un resultat comme ça:

commune DCRAN migrants

63001 00001 1
... ... .....
63001 99999 9

63002 00001 1
... ... .....
63002 99999 9

63003 00001 1
... ... .....
63003 99999 9
..
mais je veux un résultat plutôt de ce type:

COMMUNE viennent de 63001 viennent de 63002 .... viennent de 99999
63001 3 1 2
63002 5 2 0
63003 10 6 2
...

Franchement je te comprends plus.
Du coups la macro que tu as demandé dépend de ce programme qui ne marche pas?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 15h53   #12
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
il cherche un tableau croisé (il me semble )
__________________
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 13/04/2011, 15h59   #13
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 bahraoui Voir le message
il cherche un tableau croisé (il me semble )
OK!
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h05   #14
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
bahraoui, j'ai compris la première partie de ce que tu m'a expliqué .
par contre la deuxième partie pas trop:
Code :
1
2
3
4
proc transpose DATA=res prefix=commun_ out=tran(WHERE=(_NAME_="COUNT") DROP=_LABEL_ );
BY COMMUNE;
id dcran;
run;
j'ai cherché le principe de la proc transpose mais c au niveau du prefix que je ne comprends pas.
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h06   #15
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 bahraoui Voir le message
j'ai utilisé ton fichier excel.
j'espère que ça répond à ton besoin
Si j'ai bien compris, tu veux croiser commune avec DCRAN avec une proc freq que Barahoui t'a suggéré afin d'obtenir des effectifs pour générer autant de tables que de de DCRAN c'est ça?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h07   #16
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
prefix c'est pour imposer un préfixe aux nouvelles variables
si tu n'utilises pas le prefix les variables vont être de la forme _6996 _7865

Est ce que le résultat correspond à ce que tu cherches?
__________________
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 13/04/2011, 16h12   #17
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
-->oui MEAGMIND c'est exactement ça.
autant de table que de DCRAN

--> bahraoui la proc transpose ne marche pas!! je vais réessayer encore
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h14   #18
Membre Expert
 
Inscription : mars 2005
Messages : 1 010
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 010
Points : 1 258
Points : 1 258
Envoyer un message via Yahoo à bahraoui
attention aux noms des variables et au nom de la table
__________________
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 13/04/2011, 16h23   #19
Invité de passage
 
Inscription : décembre 2009
Messages : 117
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 117
Points : 4
Points : 4
ahhh ça marche!!!
Merci enormement les gars.
j'ai encore des petites chose à y régler mais je pense y arriver .
Merci encore
debutsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h25   #20
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 debutsas Voir le message
ahhh ça marche!!!
Merci enormement les gars.
j'ai encore des petites chose à y régler mais je pense y arriver .
Merci encore
C'est bon alors? plus besoin de macro?
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 02h28.


 
 
 
 
Partenaires

Hébergement Web