|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : août 2011 Messages : 1 ![]() |
Bonjour,
Je travaille avec des personnes d'ages différents et je cherche à créer une nouvelle variable (ClasseAge) afin de les répertorier par classes d'ages. J'ai essayé qqch avec SET : Code :
Est-ce que quelqu'un pourrait m'aider avec ca ? Merci d'avance |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 008 ![]() |
Hello,
il te manque un THEN Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : juin 2011 Messages : 19 ![]() |
Il manque les THEN et les ELSE IF.
Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
dans ce cas le code mag35 et sam reviennent au m^eme, puisque les categories de classeage s'emboitent parfaitement (par exemple, on ne peut pas avoir un age inferieur ou egal a 25 ans et superieur). le else if n'est donc pas indispensable mais par contre c'est une bonne logique de programmation.
Et je rejoins sam, la solution via est format est assez jolie: Code :
|
||
|
|
00
|
|
|
#5 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 008 ![]() |
MAnoutz,
peut être un PUT au lieu de format? Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Code :
|
||
|
|
00
|
|
|
#7 | |||||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 008 ![]() |
Citation:
.le put c'est pour les valeur stockées et le format c'est juste pour l'affichage. ainsi. Code :
le format c'est juste pour l'affichage et on ne pourra pas faire des traitements dessus. |
|||||
|
|
00
|
|
|
#8 | |||
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#9 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 008 ![]() |
l'OUPUT c'est un affichage et non pas des valeurs stockées (table).
|
|
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Pas sur de te suivre. On peut rajouter un out= dans la proc freq si tu veux (regarde alors la table freq), mais ca ne change pas la donne. Les donnees analysees de la variable AGECLASS sont bien les donnees formattees, et non les donnees brutes.
Code :
|
||
|
|
00
|
|
|
#11 | ||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 008 ![]() |
Désolé MAnoutz.
quand je parle des traitements, je parle des filtres, conditions,.... je reprends ton code à qui je rajouterai deux étapes DATA pour vérifier le type de valeurs dans la variables que t'as formaté le STATEMENT FORMAT. avec le format la variable AGECLASS est toujours stockée en format Numérique. Code :
si on refait le même test mais cette fois ci avec la variable ageclass2 on obtiendra bien des résultats dans la table verif1 et la table verif2 sera vide. Conclusion: avec le format, les données Réellement STOCKEES dans la table ne sont pas modifié, c'est juste leurs affichage qui est formaté. le plus simple c'est de voir du coté des dates, qui sont stockées en nombre de jours depuis 1 janvier 1960, mais elles sont affichée en JJMMAA dans les tables. j'espère que j'ai réussi à t'expliquer, Sinon il faut attendre le retour d'Olivier
|
||
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Ah ok, je vois ce que tu veux dire. A ton code, j'ai rajoute:
Code :
En fait ce qui m'interesse c'est de trouver un contre exemple, une situation qui puisse justifier l'utilisation de l'une ou de l'autre. Ou peut etre une generalisation qui puisse indiquer dans quelle situation il est preferable d'utliser le put et dans quelle il vaut mieux utiliser ma methode. dans le cas de la question au dessus, les deux fonctionnent, alors je partirais plutot vers la tienne, puisque l'on ne "cree" pas d'information (puisque ta variable est de type caractere, du solide en somme, on ne peut pas y toucher). Ma methode par contre peut trouver (sait-on jamais) une utilite car elle conserve de la souplesse (puisque non formattee) |
||
|
|
00
|
|
|
#13 | |||
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 008 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Justement.
pour la deuxieme classe il me prend 27, et ce n'est la plus petite valeur de cet intervalle. Et la proc format definit: low-25="moins de 25" donc en tout logique il devrait afficher -infini (on est pas limite aux entiers positifs) |
|
|
00
|
|
|
#15 |
![]() ![]() Samir SELMANEConsultant en Business Intelligence Inscription : février 2011 Messages : 1 008 ![]() |
bizarre,
pour moi il me prend 26, 41, 57,... il n'a pas pris la valeur 25 car il n'existe pas dans la table. c'est la même chose pour le 57 puisque normalement il devait prendre 55. cf.Pièce jointe. pour finir , DSL ZOUZOUNE on t'a pollué ton poste. .@ MAnoutz: Bon WE. |
|
|
00
|
|
|
#16 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Salut à tous.
SAM, tes explications sur format ou PUT sont tout à fait complètes. Juste pour résumer : une variable avec un format pour la mettre en tranches fonctionne comme une nouvelle variable dont les valeurs seraient les tranches "en dur", sauf pour * des calculs * des filtres (WHERE, IF) * des GROUP BY en SQL L'avantage du format par rapport au PUT ou aux IF THEN ELSE c'est qu'on gagne en place. Quand Zouzoune crée sa variable, il mobilise 11 octets pour loger les 11 caractères maximum de sa nouvelle variable (d'ailleurs, un LENGTH éviterait les valeurs tronquées car SAS va tailler la nouvelle variable en fonction de la 1e valeur qu'il y affectera, sinon). S'il met un simple format par-dessus la variable AGE, la table ne change pas de taille. Sur 20 observations on s'en fout, mais sur 20 millions on le remarque bien. Quant à vos exemples avec la proc FREQ, ce qui est stocké dans la table en sortie, c'est bien la variable formatée. Comme il faut bien quand même stocker une valeur, la proc FREQ a choisi la 1e valeur rencontrée de chaque catégorie (d'où le zéro obtenu dans le 1er essai). Mais du coup tout dépend de l'ordre de la table, et comme elle est générée aléatoirement (RANUNI(-3) ne rend jamais deux fois la même série de valeurs), vous n'obtenez pas de résultats homogènes. Bon c'est pas tout ça mais il faut que je retourne à mes vacances moi. Olivier |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com