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 21/02/2011, 13h45   #1
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Par défaut Utilisation de la fonction MAX

Bonjour, j'essai d'utiliser la fonction ROUND en y paramétrant l'arrondi en fonction du maximum d'une autre colonne (je sais c'est étrange mais le pourquoi du comment n'est pas forcément nécessaire à la résolution de mon problème).

Ex:

Code :
1
2
 
dotplot = ROUND(V1, max(colonne));
Mais voilà, je n'arrive pas à récupérer le maximum, il me renvoi qu'il n'a pas assez d'argument (si je comprends bien, utilisée comme ça, la fonction max voudrait prendre en entrée un vecteur de valeurs et non une colonne).

L'idée pour moi est d'automatiser cette opération en pouvant l'appliquer sur une table complète sans avoir à fixer l'ordre d'arrondi à chaque fois.

Quelqu'un peut m'aider?
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 14h21   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Max va chercher le maximum entre deux ou plusieurs colonnes. MAx(v1,v2)...
avec une seule variable il n'ira pas chercher le max DANS la colonne.

pour suivre cette même logique il te faut récupérer le max avant et créer une colonne dédiée avec .

Code :
1
2
3
4
5
6
7
8
9
proc sql;
CREATE TABLE test AS SELECT * , max(colonne) AS mx
FROM matable ;
quit;
 
DATA test;
SET test;
dotplot = ROUND(V1, mx);
run;
ou bien

Code :
1
2
3
4
proc sql;
CREATE TABLE test AS SELECT * , max(colonne) AS mx, ROUND(V1, CALCULATED mx) AS dotplot
FROM matable ;
quit;
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/02/2011, 14h36   #3
Membre habitué
 
Homme Julien
Ingénieur d'études / Biostatisticien
Inscription : décembre 2009
Messages : 304
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : France

Informations professionnelles :
Activité : Ingénieur d'études / Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2009
Messages : 304
Points : 101
Points : 101
Merci Datametric, j'ai vraiment du mal avec la logique de SAS quand même... en fait si je comprends bien quand tu écris en langage SAS c'est une logique en colonne, et si on veut pouvoir faire comme dans d'autre langage en définissant des valeurs qu'on s'utilise quand on veut, faut passer par une logique de liste avec du SQL quoi...
joyeux_lapin13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2011, 16h32   #4
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
pour les fonctions oui.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2011, 09h32   #5
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
Citation:
Envoyé par joyeux_lapin13 Voir le message
Merci Datametric, j'ai vraiment du mal avec la logique de SAS quand même... en fait si je comprends bien quand tu écris en langage SAS c'est une logique en colonne, et si on veut pouvoir faire comme dans d'autre langage en définissant des valeurs qu'on s'utilise quand on veut, faut passer par une logique de liste avec du SQL quoi...
Bonjour,

SAS traite ligne à ligne la table, c'est à dire si tu appliques une fonction SAS, celle ci ne s'appliquera que sur la ligne qui est dans le PDV (le PDV c'est un vecteur qui contient à chaque itération l'ensemble des données d'une ligne de la table).

En SQL tu peux faire le traitement en colonne.
J'espère que c'est assez clair.

Cordialement
__________________
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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h54.


 
 
 
 
Partenaires

Hébergement Web