- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hola, necesito crear una variable macro que contenga de 1 a N# de datos
ejemplo:
Macro normal con un dato
%let ANIO1=2021;
ANIO=&ANIO1
Macro que contenga varios datos como lo sig(no se si se escriba asi, pero es mi idea)
%let ANIO1 IN 2021,2022,2023;
ANIO=&ANIO1
pero lo ideal seria crear una variable macro que los datos que almacene dependan de una tabla ejemplo: traeme la colunma nombre de la tabla nombres donde en la columna apellido sea "X" .
esto lo he logrado con la sentensia %global , sin embargo no puedo filtrar buscando en otra tabla con esta variable.
Comparto mi codigo y el resultado que genera
Codigo:
DATA Nombres;
INPUT NumEmp Nombre $ Apellido $;
DATALINES;
1 Eduardo Quiroz
2 Paola Castillo
3 Jhovanny Torres
4 RosaM Corbi
5 Noemi Robles
6 Rocio Fuentes
7 Alvin Resendiz
8 Maricruz Buendia
;
RUN;
DATA Nombres1;
INPUT NumEmp Nombre $ Apellido $;
DATALINES;
1 Eduardo Quiroz
2 Paola Castillo
3 Jhovanny Torres
4 RosaM Corbi
5 Noemi Robles
6 Rocio Fuentes
7 Alvin Resendiz
8 Maricruz Buendia
;
RUN;
%global vlist;
proc sql;
select Nombre into:Vlist
From Work.Nombres
Where Apellido= 'Quiroz';
quit;
data lalo;
SET Nombres1;
where NOMBRE=&vlist;
RUN;
Gracias
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hola @EduardoQuiroz
Creo que puede usar un Macro Variable List. Por ejemplo:
title 'Create Macro Variable List';
proc sql;
select distinct("'"|| make || "'") into :makes separated by ',' from sashelp.cars
where make in ('Audi','BMW','Mercedes');
quit;
%put &make;
data work.luxury_car;
set sashelp.cars;
where make in (&makes);
run;
title 'Use Variable List to Subset Data';
proc print data=work.luxury_car(obs=10);var make model msrp;run;
El resulto es
Gracias
Harry
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hola @EduardoQuiroz
Creo que puede usar un Macro Variable List. Por ejemplo:
title 'Create Macro Variable List';
proc sql;
select distinct("'"|| make || "'") into :makes separated by ',' from sashelp.cars
where make in ('Audi','BMW','Mercedes');
quit;
%put &make;
data work.luxury_car;
set sashelp.cars;
where make in (&makes);
run;
title 'Use Variable List to Subset Data';
proc print data=work.luxury_car(obs=10);var make model msrp;run;
El resulto es
Gracias
Harry
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Muchísimas Gracias
Saludos