vuelos the software power military know check airline sas

the - sas vuelos



SAS, crea el nombre de archivo de la columna del conjunto de datos (2)

Para hacer esto, primero deberá crear la variable filevar= , y luego podrá usar la opción filevar= en un nuevo paso de datos para escribir dinámicamente en los archivos.

Entonces, primero crea work.users en work.users :

data work.users; length file_name $255; file_name=cats(''/home/me'',user_id,''.jpg''); run;

Luego haz lo que tratas de hacer usando la opción filevar =:

data _null_; set work.users; file dummy filevar=file_name noprint; put ImageData; run;

Tenga en cuenta que el dummy es solo un marcador de posición cuando se utiliza el método filevar= .

¿Es posible crear un nombre de archivo a partir de un valor almacenado en una columna de conjunto de datos? Lo que busco es algo como:

/* other code here, assume work.users looks like user_id ImageData */ data _null_; set work.users; file_name=cat(''/home/me/'', trim(user_id), ''.jpg''); file file_name NOPRINT; put ImageData; run;

en este momento estoy tratando de hacerlo con macros, pero no estoy teniendo suerte.


Si quieres hacer esto con macros:

data _null_; set work.users; call symput(''filename'', cats(''/home/me/'', user_id, ''.jpg'')); run; data _null_; set work.users; file "&filename." noprint; put imagedata; run;

Sin embargo, esto supone que solo hay una observación en work.users , que supongo que no es cierta. Si desea generar un archivo para cada observación, gírelo en una macro:

%macro writefile(n); %do i = 1 %to &n; data _null_; i = &i; set users point=i; call symput(''filename'', cats(''c:/temp/', user_id, ''.txt'')); stop; run; data _null_; i = &i; set users point=i; file "&filename." noprint; put imagedata; stop; run; %end; %mend;

Aquí, el argumento & n es el número de observaciones en su conjunto de datos. Puede obtenerlo programáticamente, pero es más fácil para los propósitos actuales simplemente pasarlo manualmente a la macro.