我创建了一个名为 &CPF 的提示,在其中输入多个值,我想将输入的所有值放入表中。
我尝试了一些方法,但没有任何效果。
数据测试; 设置原始(keep=&TESTE); 运行;
有人知道该怎么做吗?
谢谢指教
当您有多值提示时,每个值都存储在其自己的宏变量中。对于您的情况,我们假设您的提示名为
TESTE
。您只想保留用户输入的变量。
假设我们要在 sashelp.cars 上运行它。我们想要保留变量“品牌”、“型号”和“马力”。创建一个名为 TESTE 的测试程序,运行以下代码:
%put _USER_;
这会显示所有用户定义的宏变量。让我们根据提示运行程序并检查日志。
您将看到以下宏变量:
GLOBAL TESTE Make
GLOBAL TESTE0 3
GLOBAL TESTE1 Make
GLOBAL TESTE2 Model
GLOBAL TESTE3 Horsepower
GLOBAL TESTE_COUNT 3
TESTE1-TEST3
保存每个单独的值,TESTE_COUNT
给出宏变量的总数。您可以使用它来循环并获取每个值。
%macro teste;
data teste;
set sashelp.cars(keep=%do i = 1 %to &teste_count.;
&&teste&i
%end;
);
run;
%mend;
%teste;
您可以通过创建一个宏,将所有这些宏变量解析为一个以空格分隔的列表,该宏在您指定提示名称时返回它。
%macro get_prompt_values(name);
%local list;
%do i = 1 %to &&&name._count;
%let list = &list &&&name.&i;
%end;
&list
%mend;
data teste;
set sashelp.cars(keep=%get_prompt_values(teste));
run;