Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 15/02/2013, 17h18   #1
mon pseudo
Invité régulier
 
Femme Emilie
chercheur
Inscription : avril 2012
Messages : 22
Détails du profil
Informations personnelles :
Nom : Femme Emilie

Informations professionnelles :
Activité : chercheur
Secteur : Santé

Informations forums :
Inscription : avril 2012
Messages : 22
Points : 7
Points : 7
Par défaut Compter le nombre de fois où la variable est positive

Bonjour à tous,
J'ai une base de données avec 8 variables toutes binaires. Les 4 premières sont en 0/1 et les 4 dernières en 0/5.
Je voudrais compter le nombre de 1 pour la variable 1, la 2, la 3 et la 4 et compter le nombre de 5 pour la variable 5, 6, 7 et 8.
Je voudrais que ces 8 résultats soient mis dans une table à partir de laquelle je pourrai faire des graphiques.

Merci à tous!
mon pseudo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2013, 09h28   #2
frajen
Membre actif
 
Homme Jérémy Noël
Consultant Support Client SAS
Inscription : mai 2011
Messages : 87
Détails du profil
Informations personnelles :
Nom : Homme Jérémy Noël
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant Support Client SAS
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2011
Messages : 87
Points : 160
Points : 160
Bonjour,

Je ne suis pas certains d'avoir compris votre demande mais si vous voulez juste récupérer le nombre de positif pour chaque variable j'écrirai quelque chose du genre:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
DATA new;
SET votre_table end=dernier;
IF x1>0 then count1+1;
IF x2>0 then count2+1;
IF x3>0 then count3+1;
IF x4>0 then count4+1;
IF x5>0 then count5+1;
IF x6>0 then count6+1;
IF x7>0 then count7+1;
IF x8>0 then count8+1;
IF dernier;
run;
Je pense qu'il doit être possible d'optimiser encore un peu ce code.

Cordialement,
Jérémy NOEL
frajen est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/02/2013, 09h52   #3
ibrahima13
Membre régulier
 
Inscription : juillet 2010
Messages : 82
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 82
Points : 89
Points : 89
Bonjour,

La solution précédente est une bonne solution, mais si ta table d'entrée est volumineuse tu peux faire une requete SQL, qui t'évitera de lire les lignes 1 à 1 comme dans l'étape DATA.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
proc sql;
CREATE TABLE count
AS SELECT 
 sum(x1=1) AS sum_x1
,sum(x2=1) AS sum_x2
,sum(x3=1) AS sum_x3
,sum(x4=1) AS sum_x4
,sum(x5=5) AS sum_x5
,sum(x6=5) AS sum_x6
,sum(x7=5) AS sum_x7
,sum(x8=5) AS sum_x8
 
FROM table_entree
;
quit;
Bon courage.
ibrahima13 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/02/2013, 10h10   #4
mon pseudo
Invité régulier
 
Femme Emilie
chercheur
Inscription : avril 2012
Messages : 22
Détails du profil
Informations personnelles :
Nom : Femme Emilie

Informations professionnelles :
Activité : chercheur
Secteur : Santé

Informations forums :
Inscription : avril 2012
Messages : 22
Points : 7
Points : 7
Merci à tous les 2 pour vos réponses.
Le 2ème code stocke mes résultats dans la table count.
Je vais les essayer, je vous dirai.

Merci bien.
mon pseudo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2013, 11h04   #5
mon pseudo
Invité régulier
 
Femme Emilie
chercheur
Inscription : avril 2012
Messages : 22
Détails du profil
Informations personnelles :
Nom : Femme Emilie

Informations professionnelles :
Activité : chercheur
Secteur : Santé

Informations forums :
Inscription : avril 2012
Messages : 22
Points : 7
Points : 7
Le deuxième code fonctionne à merveille!
Merci.
mon pseudo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2013, 13h12   #6
s_a_m
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 310
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 310
Points : 2 543
Points : 2 543
Hello,
Pour automatiser la procédure, tu pourras faire :
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
 
DATA test;
input var1-var8;
cards ;
0 1 0 0 0 0 0 5
0 0 1 1 5 0 5 5
0 0 1 0 0 0 0 5
1 1 1 1 5 0 5 5
0 0 1 1 5 0 5 0
;
run;
proc sort;
BY var1-var8;
run;
 
proc transpose DATA=test out=test1 (keep= _name_ col1 WHERE=(col1 IN (1,5)) );
var var1-var8;
BY var1-var8;
run;
 
proc sql;
	CREATE TABLE   cnt_var AS SELECT _name_ , count(*) AS nb FROM test1 
	GROUP BY _name_, col1;
quit;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/02/2013, 13h59   #7
mon pseudo
Invité régulier
 
Femme Emilie
chercheur
Inscription : avril 2012
Messages : 22
Détails du profil
Informations personnelles :
Nom : Femme Emilie

Informations professionnelles :
Activité : chercheur
Secteur : Santé

Informations forums :
Inscription : avril 2012
Messages : 22
Points : 7
Points : 7
Merci beaucoup !
mon pseudo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h59.


 
 
 
 
Partenaires

Hébergement Web