Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
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 16/08/2011, 17h55   #1
Invité de passage
 
Femme
Chargé d'affaire
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Espagne

Informations professionnelles :
Activité : Chargé d'affaire

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Par défaut Afficher valeurs manquantes proc sql

Bonjour,

J'utilise la proc sql avec sas pour extraire des données pas catégories et par date. J'a le problème suivant:
il y a des dates ou le resultat est 0 et je voudrais garder ces observations dans la table mais sas ne m'affiche pas ces dates.

Question: Y-a-t-il un façon de lui dire d'afficher resultat=0 ou - quand la valeur est nulle?

Merci
ALEA001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 09h53   #2
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
Citation:
il y a des dates ou le resultat est 0
Tu parles du nombre non formatte?

Citation:
Question: Y-a-t-il un façon de lui dire d'afficher resultat=0 ou - quand la valeur est nulle?
Surement, mais je ne comprends pas ton probleme. Merci de faire parvenir ton code et un jeu de donnee correspondant a ce que tu decris.
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h55   #3
Invité de passage
 
Femme
Chargé d'affaire
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Espagne

Informations professionnelles :
Activité : Chargé d'affaire

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Bonjour Manoutz,

Voici le code que je programme:

Code sql :
1
2
3
SELECT DISTINCT annee,trimestre,tipe_personne,id_zone, count(ID_IM) AS a
FROM trib.bit_tip  WHERE id_obra='0' GROUP BY annee, trimestre,tipe_perso, id_zone;QUIT;
PROC SORT DATA=trans_BI_par_s nodupkey;BY annee trimestre TIPe_personne,id_zone;RUN;

Et voici le résultat que j'obtiens en piece jointe.

J'ai imprime 15 observations de l'année 2009 au trimestre 1 et j'ai 2 types de personnes: type = 1 j'ai bien les 7 zones geographiques mais pour le type de personne 2, l'effectif est null pour zone=2 donc il ne me l'affiche pas. Je voudrai avoir zone=2 a=0.

C'est p-etre pas tres clair, je reste par ici pour plus de precision. Merci beaucoup
ALEA001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h57   #4
Invité de passage
 
Femme
Chargé d'affaire
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Espagne

Informations professionnelles :
Activité : Chargé d'affaire

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Parond, la piece jointe
Fichiers attachés
Type de fichier : doc a.doc (25,5 Ko, 8 affichages)
ALEA001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 12h40   #5
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
Tes donnees sont sous forme d'image, je ne peux pas les manipuler directement.

Merci de les inclure dans un etape data (avec un input et un cards par exemple).
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 12h58   #6
Invité de passage
 
Femme
Chargé d'affaire
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Espagne

Informations professionnelles :
Activité : Chargé d'affaire

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Voici le tableau imprimé;

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DATA a;
imput obs annee trimestre type_p id_zone n_pers;
cards;
1 2009 1 1 1 57
2 2009 1 1 2 17
3 2009 1 1 3 32
4 2009 1 1 4 34
5 2009 1 1 5 22 
6 2009 1 1 6 5
7 2009 1 1 7 14
8 2009 1 2 1 2
9 2009 1 2 3 3
10 2009 1 2 4 6
11 2009 1 2 5 8
12 2009 1 2 6 5
13 2009 1 2 7 3
14 2009 1 3 2 12;run;
ALEA001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 13h01   #7
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
Citation:
Envoyé par ALEA001 Voir le message
Bonjour Manoutz,

Voici le code que je programme:

Code sql :
1
2
3
SELECT DISTINCT annee,trimestre,tipe_personne,id_zone, count(ID_IM) AS a
FROM trib.bit_tip  WHERE id_obra='0' GROUP BY annee, trimestre,tipe_perso, id_zone;QUIT;
PROC SORT DATA=trans_BI_par_s nodupkey;BY annee trimestre TIPe_personne,id_zone;RUN;

Et voici le résultat que j'obtiens en piece jointe.

J'ai imprime 15 observations de l'année 2009 au trimestre 1 et j'ai 2 types de personnes: type = 1 j'ai bien les 7 zones geographiques mais pour le type de personne 2, l'effectif est null pour zone=2 donc il ne me l'affiche pas. Je voudrai avoir zone=2 a=0.

C'est p-etre pas tres clair, je reste par ici pour plus de precision. Merci beaucoup
Hello ,
ta variable ID_OBRA est numérique donc :

s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 13h10   #8
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
pas evident de s'en sortir, c'est un peu confus tout ca.. J'ai essaye de faire la correspondance entre ton jeu de donnees et ton code, ca donnerai ca:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DATA a;
input obs annee trimestre type_p id_zone n_pers;
cards;
1 2009 1 1 1 57
2 2009 1 1 2 17
3 2009 1 1 3 32
4 2009 1 1 4 34
5 2009 1 1 5 22 
6 2009 1 1 6 5
7 2009 1 1 7 14
8 2009 1 2 1 2
9 2009 1 2 3 3
10 2009 1 2 4 6
11 2009 1 2 5 8
12 2009 1 2 6 5
13 2009 1 2 7 3
14 2009 1 3 2 12
;
run;
 
proc sql;
CREATE TABLE ALEA AS
SELECT DISTINCT annee,trimestre,type_p,id_zone, count(id_zone) AS a
FROM A  
GROUP BY annee, trimestre,type_p, id_zone;
quit;
Je me vois pas le rapport avec:
Citation:
type = 1 j'ai bien les 7 zones geographiques mais pour le type de personne 2, l'effectif est null pour zone=2 donc il ne me l'affiche pas.
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 13h16   #9
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
Je crois que ce n'est pas le bon jeu de données.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h04   #10
Invité de passage
 
Femme
Chargé d'affaire
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Espagne

Informations professionnelles :
Activité : Chargé d'affaire

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Je suis desole, il faut que j'aprenne à m'expirmer!

Voici les données

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DATA a;
input annee trimestre type_p id_zone n_pers;
cards;
2009 1 1 1 57
2009 1 1 2 17
2009 1 1 3 32
2009 1 1 4 34
2009 1 1 5 22 
2009 1 1 6 5
2009 1 1 7 14
2009 1 2 1 28
2009 1 2 3 3
2009 1 2 4 6
2009 1 2 5 8
2009 1 2 6 5
2009 1 3 2 12
;
run;
Dissons que je veut obtenir le nombre de personnes de type 2 pour toutes les zones géographiques et je veut obtenir:
Code :
1
2
3
4
5
6
7
8
type_p zone n_pers
2 1 28
2 2 0
2 3 3
2 4 6
2 5 8
2 6 5
2 7 0
*J'utilise le code suivant;
Code sql :
1
2
3
4
5
proc sql;
CREATE TABLE b AS
SELECT type_p, id_zone, n_pers
FROM a WHERE type_p=2;
run;

Et j'obtiens le tableau suivant;
[CODE]obs type_p id_zone n_pers
1 2 1 28
2 2 3 3
3 2 4 6
4 2 5 8
5 2 6 5
CODE]

Voila, j'espere que c'est plus clair.

Merci beaucoup de votre aide
ALEA001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h32   #11
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
oui. par contre evite le run; sur une proc sql, ca jazze! Essaye au moins tes programmes avant de nous les soumettre, et merci de reflechir et detailler tes problemes

La proc sql te permetttra de d'obtenir des comptages sur les categories existantes. il faut alors la merger avec une table "toute formattee":
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
DATA a;
input annee trimestre type_p id_zone n_pers;
cards;
2009 1 1 1 57
2009 1 1 2 17
2009 1 1 3 32
2009 1 1 4 34
2009 1 1 5 22 
2009 1 1 6 5
2009 1 1 7 14
2009 1 2 1 28
2009 1 2 3 3
2009 1 2 4 6
2009 1 2 5 8
2009 1 2 6 5
2009 1 3 2 12
;
run; 
 
proc sql;
CREATE TABLE COMPTAGE AS
SELECT type_p, id_zone, n_pers
FROM a WHERE type_p=2;
quit; 
 
DATA REFERRENCE;
	do TYPE_P=1 TO 2;
		do ID_ZONE=1 TO 7;
		 N_PERS=0;
		 output;
		end;
	end;
run;
 
DATA FINAL;
MERGE REFERRENCE COMPTAGE;
BY TYPE_P id_zone;
run;
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h01   #12
Invité de passage
 
Femme
Chargé d'affaire
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Espagne

Informations professionnelles :
Activité : Chargé d'affaire

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Merci beaucoup Manoutz ,
et encore desole pour ma mauvaise communication!
ALEA001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h23   #13
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
Pas de soucis!

Bonne continuation
Manoutz 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 06h43.


 
 
 
 
Partenaires

Hébergement Web