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 12/06/2011, 16h25   #1
Invité régulier
 
Inscription : mars 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 45
Points : 7
Points : 7
Par défaut proc means sur des lignes

Bonjour,
j'ai une table de la forme

Code :
1
2
3
4
var    pond   1990   1991   1992 .....
var1     2      45.3    30     12
var2     2      33      11     32
var3     1      41      30.5   15
Je veux calculer la moyenne des var ponderés par pond.

Ce code au dessous :

Code :
1
2
3
4
PROC MEANS DATA=table1;
VAR var1 var2 var3 var4 var5 var6 ;
WEIGHT pond;
OUTPUT OUT=Table2;
ne s'applique pas dans ce cas, non??? car les var sont en ligne

Et si je pense à transposer la table,la ponderation pond sera en ligne, donc ne sera plus variable.
Avez-vous idée??
Imfafa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2011, 17h27   #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
Si je comprends bien, le poids est constant pour chaque année ?
Ca n'a donc pas d'impact sur ton calcul de moyenne !
Tu peux faire ça avec une étape DATA
Code :
1
2
3
4
DATA moyennes ;
 SET base ;
 moy = MEAN(_1990, _1991, ...) ;
RUN ;
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 15h06   #3
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
Une autre solution permettant de conserver les poids serait de transposer de manière partielle. Ta table deviendrait
Code :
1
2
3
4
5
6
7
8
9
10
var    pond  annee    col1
var1     2    1990     45.3
var1     2    1991        30
var1     2    1992        12
var2     2    1990        33
var2     2    1991        11
var2     2    1992        32
var3     1    1990        41
var3     1    1991     30.5
var3     1    1992        15
Avec la proc Transpose :
Code :
1
2
3
4
PROC TRANSPOSE DATA=tableIn OUT=tableOut (RENAME=(_name_=annee)) ;
  VAR _1990 _1991 _1992 ... ;
  BY var NOTSORTED pond ;
RUN ;
Puis la proc Means :
Code :
1
2
3
4
5
6
PROC MEANS DATA=tableOut NOPRINT ;
  VAR col1 ;
  WEIGHT pond ;
  BY var NOTSORTED ;
  OUTPUT OUT=moyennes MEAN=moyenne ;
RUN ;
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 00h17   #4
Invité régulier
 
Inscription : mars 2011
Messages : 45
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 45
Points : 7
Points : 7
Voilà !! C'est la deuxième que je cherche.
Merci
Imfafa 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 00h52.


 
 
 
 
Partenaires

Hébergement Web