考虑以下数据
Data ss;
infile datalines;
input ename $;
datalines;
Ram
Sita
Ram
Arjun
Sita
Ram
Arjun
;
run;
#output
Ram
Sita
Arjun
我知道其他方法,例如按 ename 对数据进行排序,然后使用第一个,但这样我们需要对数据进行排序,并且输出将从 Arjun、Ram 和 Sita 开始。但是,我们需要保留我在预期输出中提到的顺序。
proc sort data=ss;
by ename;
run;
data want;
set ss;
by ename;
if first.ename;
run;
您可以通过使用哈希表或数组来跟踪已读取的名称来做到这一点。但是如果你的数据不是太大,你也可以通过添加一个rownumber变量来做到这一点,然后你可以排序,选择你显示的first.ename,然后再次排序以恢复顺序。
或者,如果您喜欢 SQL,在添加 rownum 列后,您可以这样做: