Bonjour,
Une collègue de travail est partie en congé et m'a laissé le code ci-dessous qui à priori ne plantait pas.
EMP_NBH et EMP_SAL de type caractères ont été supprimés. EMP_NBH_num et EMP_SAL_num sont bien de type numériques et ont été renommés en EMP_NBH et EMP_SAL
*avant concatenation, vérifier s'il existent les variables sources d'anomalies (même nom mais différent format par exemple);
proc contents data=bas_sortant_anter_15 position;
run;
proc contents data=ficb16_b position;
run;
*oui, ici c'est le cas entre EMP_NBH EMP_SAL;
*donc il faut reformater les deux variables pour qu'elles collent aux variables de la base concaténée;
data ficb16_b;
set ficb16_b;
EMP_NBH_num=input(EMP_NBH,8.);
EMP_SAL_num=input(EMP_SAL,8.);
run;
*vérification;
proc print data=ficb16_b (obs=50);
var EMP_NBH EMP_NBH_num EMP_SAL EMP_SAL_num;
where ksiq="3";
run;
data ficb16_b;
set ficb16_b;
drop EMP_NBH
EMP_SAL;
rename EMP_NBH_num=EMP_NBH
EMP_SAL_num=EMP_SAL;
run;
*Mise à jour de la base standard en rajoutant au fichier agrégé de l'année antérieure le fichier de la nouvelle année;
* 2:concaténation des fichiers;
data bas_sortant_anter;
set bas_sortant_anter_15 ficb16_a;
run;
Au moment d'exécuter, j'ai le message :
1910 data bas_sortant_anter;
1911 set bas_sortant_anter_15 ficb16_a;
ERROR: Variable EMP_NBH has been defined as both character and numeric.
ERROR: Variable EMP_SAL has been defined as both character and numeric.
1912 run;
Voici ce que donnent les proc contents avant ...:
Pour : WORK.BAS_SORTANT_ANTER_15
12 EMP_NBH Num. 8 BEST12. F12.
13 EMP_SAL Num. 8 BEST12. F12.
Pour : FICB16_B
13 EMP_NBH Texte 2
14 EMP_SAL Texte 5
... et après :
Pour : WORK.BAS_SORTANT_ANTER_15
12 EMP_NBH Num. 8 BEST12. F12.
13 EMP_SAL Num. 8 BEST12. F12
Pour : FICB16_B
EMP_NBH Num. 8
45 EMP_SAL Num. 8
La proc print montre bien que les nouvelles variables sont calés à droite (les anciennes à gauche)
Et en faisant clic droit sur le nom des colonnes (attribut des colonnes), je vois que le type est bien Numeric dans les 2 cas... Je ne vois pas pourquoi SAS dit que ces 2 variables sont de type caractère ?
J'ai le meme message d'erreur en faisant :
data ficb16_b;
set ficb16_b;
drop EMP_NBH EMP_SAL;
EMP_NBH=EMP_NBH_num;
EMP_SAL=EMP_SAL_num;
run;
Merci d'avance.
Partager