根据其他变量的条件修改SAS数据集变量

时间:2016-10-19 10:35:02

标签: sas

我在SAS EG中有一个如下所示的数据集:

ID |日期|名称
ABC1 | 31MAR2016 |文本1
ABC1 | 30JUN2016 |文本2
ABC2 | 31MAR2016 |文本3
ABC2 | 30JUN2016 |文本4

我想使用理想的数据步骤将此数据集转换为:

ID |日期|名称
ABC1 | 31MAR2016 |文本2
ABC1 | 30JUN2016 |文本2
ABC2 | 31MAR2016 |文本4
ABC2 | 30JUN2016 |文本4

所以我想选择与最新日期对应的名称,并在ID匹配时使用它来替换最早的名称。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

1)对数据进行排序,最早的记录将在每个ID组中排在第一位。

2)使用组处理更改所有记录的值,除了每组中的第一个记录。

3)排序以恢复原始序列。

proc sort data=source out=source_sorted;
    by id descending date;
run;

data result;
    set source_sorted;
    by id;
    length name_tmp $10;
    retain name_tmp "";

    if first.id then
        name_tmp = name;

    name = name_tmp;

    drop name_tmp;
run;

proc sort data=result;
    by id date;
run;