Bonjour,
j'ai une colonne numérique du style 12340,20 (mais peut être 45,20 ou 145,20....)
Je cherche à créer une colonne calculée avec seulement 0,20 toujours en numérique.
Quelqu'un a une solution ?
D'avance merci
Bonjour,
j'ai une colonne numérique du style 12340,20 (mais peut être 45,20 ou 145,20....)
Je cherche à créer une colonne calculée avec seulement 0,20 toujours en numérique.
Quelqu'un a une solution ?
D'avance merci
Bonjour,
Il existe peut être une autre solution mais voici ce que je propose:
Le résultat est la variable numérique v3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 data a; input v1 ; cards; 12340.20 45.20 145.20 ; run; data b; set a; v2=scan(put(v1,8.2),2,'.'); v3=input(cats('0.',v2),8.); format v1 v3 8.2; run;
Bonne journée,
Merci beaucoup,
C'est bien ce que je cherche à faire.
Toutefois mes nombres sont dans une table qui fait plusieurs millier de ligne dans une colonne nommée Montant.
Comment récupérer les données ? (je ne maitrise pas trop les DATA)
Merci de ta réponse.
Il est également possible de calculer :
v1 = montant
v2 = partie entière
v3 = partie décimale
Le calcul :
v2 = int(v1)
v3 = v1-v2
Ou bien :
v3 = v1 - int(v1)
Sans être expert en code SAS, on peut essayer en proc sql :
Il faudra ajouter les identifiants bien sûr.
Code : Sélectionner tout - Visualiser dans une fenêtre à part select montant - trunc(montant) as decimale from matable
Bonjour stackware,
Ta solution de colonnes calculées fonctionne très bien (encore merci)
Pour le fun, j'ai essayé de faire la même chose avec une proc sql qui fonctionne également très bien.
Cependant, j'ai 3 tables en sortie.
Y-a-t-il une possibilité de n'en faire qu'une et donc d'enchainer les proc sql ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 proc sql; create table CB_OPTION_EPARGNE_BIS AS select DATE_ENCAISSEMENT, NUMDSS, LIBENC, LIBOPRCMP, MNTTOTENC as Montant_facture format=CPR_NUM., int(MNTTOTENC) as Montant_Entier format=CPR_NUM. from CB_OPTION_EPARGNE quit; proc sql; create table CB_OPTION_EPARGNE_BIS2 AS SELECT DATE_ENCAISSEMENT, NUMDSS, LIBENC, LIBOPRCMP, Montant_facture format=CPR_NUM., Montant_Entier format=CPR_NUM., (Montant_facture - Montant_Entier) as Montant_Centimes format=CPR_NUM. from CB_OPTION_EPARGNE_BIS group by NUMDSS; quit; proc sql; create table CB_OPTION_EPARGNE_BIS3 AS SELECT DATE_ENCAISSEMENT, NUMDSS, LIBENC, LIBOPRCMP, Montant_facture format=CPR_NUM., Montant_Entier format=CPR_NUM., Montant_Centimes format=CPR_NUM., abs((-1 - Montant_Centimes)) as Montant_Epargne format=CPR_NUM. from CB_OPTION_EPARGNE_BIS2 group by NUMDSS; quit;
Je pense qu'effectivement tout peut être regroupé en une seule et même requête (i.e. une seule et même table).
Allez, tu peux essayer ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 proc sql; create table CB_OPTION_EPARGNE_BIS AS select DATE_ENCAISSEMENT, NUMDSS, LIBENC, LIBOPRCMP, MNTTOTENC as Montant_facture format=CPR_NUM., int(MNTTOTENC) as Montant_Entier format=CPR_NUM., (MNTTOTENC - int(MNTTOTENC)) as Montant_Centimes format=CPR_NUM., abs((-1 - (MNTTOTENC - int(MNTTOTENC)))) as Montant_Epargne format=CPR_NUM. from CB_OPTION_EPARGNE quit;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager