Je suis novice en programmation SAS et j'essaie de trouver le moyen le plus efficace de réaliser mon projet en cours. Fondamentalement, j'ai besoin de modifier le fichier .csv existant stocké sur le serveur SAS et l'enregistrer dans mon dossier sur le même serveur.Traitement de fichiers CSV - SAS
Modification nécessaire:
- garder .csv au format
- utilisation "|" au lieu de « » comme séparateur
- ont le nom de sortie suivant: filename_YYYYMMDDhhmmss.csv
- ne garder que 4 variables du fichier d'origine
- renomme certaines des variables que nous gardons
Voici le script J'utilise actuellement, mais il y a quelques problèmes avec elle:
PROC IMPORT OUT = libname.original_file (drop=var0)
FILE = "/.../file_on_server.csv"
DBMS = CSV
REPLACE;
RUN;
%PUT date_human = %SYSFUNC(PUTN(%sysevalf(%SYSFUNC(TODAY())-1), datetime20.));
proc export data = libname.original_file (rename= (var1=VAR11 var2=VAR22 Type=VAR33))
outfile = '/.../filename_&date_human..csv' label dbms=csv replace;
delimiter='|';
run;
J'ai aussi un problème avec la variable appelée « type » lors du renommage comme il semble qu'il y ait un conflit avec certains des mots clés du système. Le format de date n'est pas bon non plus, et je n'ai malheureusement pas trouvé le format exact sur les forums SAS.
Un conseil pour rendre ce script plus efficace est grandement apprécié.
merci beaucoup pour une explication si détaillée!Y at-il une raison pour laquelle je pourrais obtenir les nouveaux noms de variables nécessaires, mais le contenu est vide? –
Assurez-vous que le PUT est après le bloc IF. Assurez-vous également que les lignes de données sont réellement délimitées par des virgules. Comme le bloc IF force les valeurs pour le premier enregistrement, il se peut que la première ligne soit également lue comme vide. Ajoutez cette instruction pour vider les 5 premières lignes. 'if _n_ <= 5 then putlog _infile_;' – Tom
J'ai essayé de réparer mon script, et je n'ai toujours aucun résultat, mais les valeurs sont délimitées par "|" comme spécifié. –