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 10/08/2011, 05h28   #1
Invité de passage
 
Femme
Étudiant
Inscription : août 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : août 2011
Messages : 6
Points : 1
Points : 1
Par défaut extraction de plusieurs ligne ensembles dans une colonne avec conditions sur une autre colonne

Bonjour ,

Je cherche un programme pour nettoyer mes données:
Voici le problème:
J,ai 4 colonnes: A B C D
Dans A: nom
Dans B nombre des répétitions d'un individu dans A
Dans C, statistique (N (nombre), min, max et écart-type)
dans D: le prix de A

Je voudrai extraire seulement les individus ayant N>2 mais tout en prenant avec N le min, max et écart-type.

Merci
Farani est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 06h46   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Je ne suis pas sûr d'avoir bien compris tes données mais a priori si tu fais une proc Transpose (by A B D) de la colonne C pour mettre tes stats dans autant de colonnes différentes, il n'y aura qu'un WHERE à 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 work.test ;
  INPUT a $ /* nom */
        b   /* nb de répétitions dans A */
		c   /* stat : N, min, max, écart-type */
		d   /* prix associé à A */
		;
DATALINES ;
carottes 18 120 2.35
carottes 18 23 2.35
carottes 18 68 2.35
carottes 18 32.333 2.35
boeuf 25 1800 6.99
boeuf 25 8 6.99
boeuf 25 789 6.99
boeuf 25 4568.65 6.99
;
RUN ;
PROC TRANSPOSE DATA=work.test
                OUT=work.res (DROP=_name_
                             WHERE=(stat1 > 100))
             PREFIX=stat ;
  VAR c ;
  BY a b d NOTSORTED ;
RUN ;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 09h50   #3
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
Si je comprends bien ta colonne C regroupe 4 statistiques (C'est donc une chaine de caractere)... En ce sens il suffit de poser une condition sur une sous-chaine de cette variable

mais je rejoins la remarque d'Olivier: fournit nous un exemple de tres donnees et de ce que tu souhaites obtenir.

Manoutz
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 17h28   #4
Invité de passage
 
Femme
Étudiant
Inscription : août 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : août 2011
Messages : 6
Points : 1
Points : 1
Citation:
Envoyé par Manoutz Voir le message
Si je comprends bien ta colonne C regroupe 4 statistiques (C'est donc une chaine de caractere)... En ce sens il suffit de poser une condition sur une sous-chaine de cette variable

mais je rejoins la remarque d'Olivier: fournit nous un exemple de tres donnees et de ce que tu souhaites obtenir.

Manoutz
Bonjour

Merci de vos réponses. Olivier a compris ce que je voulais dire sauf a la dernière colonne Voilà a quoi ressemble mes données :
a (nom) b(fréquence) c (stat) d (prix)
carottes 3352 N 3352
carottes 3352 MIN 0
carottes 3352 MAX 12000
carottes 3352 mean 463
carottes 3352 SD 701
bœuf 9 N 9
bœuf 9 MIN 234
bœuf 9 MAX 293
bœuf 9 mean 258
bœuf 9 SD 17

ce que je voudrais faire c'est prendre les noms dont le N est supérieur a 3.
(mais aussi garder les MIN-Max mean et SD)
J'ai essayé ce que Olivier a proposé mais vu que je n’étais pas explicite ça n'a pas donné les résultats que j'ai attendu.

Merci encore
Farani est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 17h37   #5
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Alors voilà ce que ça devient (on utilise la stat pour faire des noms de variables).
Code :
1
2
3
4
5
6
7
PROC TRANSPOSE DATA=work.test
                OUT=work.res (DROP=_name_
                             WHERE=(n > 3)) ;
  VAR d ;
  ID c ;
  BY a b NOTSORTED ;
RUN ;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2011, 18h05   #6
Invité de passage
 
Femme
Étudiant
Inscription : août 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : août 2011
Messages : 6
Points : 1
Points : 1
Citation:
Envoyé par olivier.decourt Voir le message
Alors voilà ce que ça devient (on utilise la stat pour faire des noms de variables).
Code :
1
2
3
4
5
6
7
PROC TRANSPOSE DATA=work.test
                OUT=work.res (DROP=_name_
                             WHERE=(n > 3)) ;
  VAR d ;
  ID c ;
  BY a b NOTSORTED ;
RUN ;
C'est résolu

Merci beaucoup!
Farani 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 08h46.


 
 
 
 
Partenaires

Hébergement Web