sas - 跨多个数据步骤维护 ID 值

标签 sas

我创建了很多不同的数据集,但我需要创建一个变量 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/

相关文章:

sas - 如何让 SAS 忽略缺失的变量名称?

sql - SAS、proc Summary 中哪个统计计算速度更快?

sas - 屏蔽 sysget 调用输出中的 & 符号

csv - 将多个 SAS 数据集批量转换为 CSV 文件

sas - memtype = VIEW 的 PROC DELETE 语法

SAS。变量是否在数据步骤的每次迭代中都设置为缺失?

sas - 在 infile 语句 (SAS) 中使用 DSD 选项时,数据错误地读入为缺失

sas - 读取当前观测中的下一个非缺失观测值

sas - 转置逗号分隔字段

sas - 带有宏的分类变量