我创建了很多不同的数据集,但我需要创建一个变量 ID,该变量将在每行的第一个数据集中增加 1。在下一个数据集中,我需要让 ID 变量从最后一个数据步骤的 ID 变量停止的位置继续。
我尝试过使用宏变量和保留语句,但它不起作用。我正在使用的数据集会发生变化,因此我不能手动进入并将第二个数据集设置在另一个数据集停止的数字 #40 处。这是我迄今为止所做的一个示例:
%let test_id=1;
data work.ex1;
set work.ex1_test;
ID + &test_id.;
retain ID 0;
call symput('test_id', &test_id.+1);
first_name= First;
run;
data work.ex2;
set work.ex2_test;
ID + &test_id.;
retain ID length(&test_id.);
call symput('test_id', &test_id.+1);
run;
最佳答案
你已经很接近了,但还没有完全实现。
您需要将ID
初始化为宏变量。然后递增它。然后将宏变量设置为ID
的新值。
%let initial_id=0;
data work.ex1;
set sashelp.class;
retain ID &initial_id.;
ID+1;
call symputx('initial_id', ID);
first_name= name;
run;
data work.ex2;
set sashelp.class;
retain ID &initial_id.;
ID+1;
call symputx('initial_id',ID);
run;
关于sas - 跨多个数据步骤维护 ID 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051456/