我在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匹配时使用它来替换最早的名称。
提前感谢您的帮助。
答案 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;