2015-07-16 6 views
2

J'essaie de créer un fichier pour chaque enregistrement de mon jeu de données SAS. J'ai réussi à le faire en utilisant la sortie SAS ODS en utilisant l'option "newfile = page" puis en exécutant simplement un rapport proc sur l'ensemble de données. Le problème que j'ai est que cela se traduit par des noms de fichiers gerneric, séquentiellement numérotés (test, test1, test2, etc ...). Je voudrais nommer chaque fichier en fonction d'une variable de l'ensemble de données. Dans l'exemple ci-dessous, j'aimerais que les noms de fichiers portent le nom «seq_nbr» dans l'ensemble de données.Comment créer des fichiers html SAS avec des noms correspondant à un champ de dataset?

ods html path = "C:\test\" 
    file = 'test.html' 
    contents = 'contents.html 
    frame = 'frame.html' 
    code = (url="C:\test\javascript.js") 
    newfile=page; 

    proc report data = test2 nowindows headline headskip; 
    column tDate tTime created_by cmtText; 
    by seq_nbr; 

    run; 
+1

Je ne pense pas qu'il y ait un "simple" à ce sujet. Je pense que vos options sont soit de faire quelque chose comme la meilleure réponse à [cette question] (http://stackoverflow.com/questions/9485769/sas-proc-sgplot-by-group-auto-file-names) suggère, qui est de faire une macro qui itère pour chacune de vos valeurs par (vous donnant ainsi une variable macro à utiliser pour le titre), ou éventuellement d'utiliser 'PROC DOCUMENT' - mais cela je pense serait extrêmement compliqué. Ou, alternativement, d'utiliser l'étape de données pour écrire le fichier HTML (comme s'il s'agissait d'un fichier texte); possible avec un fichier relativement simple. – Joe

+0

Si l'une de ces méthodes fonctionne pour vous, je pourrais probablement vous aider à le montrer, bien que la méthode 'PROC DOCUMENT' soit probablement plus compliquée que j'ai le temps de montrer. – Joe

+0

Le moyen le plus simple peut être de simplement renommer les fichiers par la suite. –

Répondre

0

Vous avez besoin d'une macro pour cette solution

%macro doit; 
proc sql; 
select count(*) into :n from test2 ; 
quit; 

%do i=1 %to &n; 
data _null_; 
if _n_=&i call symput('name',seq_nbr); 
run; 

proc export data=something outfile="&name"; 
run; 
%end; 

%mend; 
%doit;