我有这个问题
我的代码是
data step10;
set step9;
by referenceid NOTSORTED;
if first.referenceid then JOIN_KEY=1;
ELSE JOIN_KEY+1;
run;
然后输出显示
最后两行应为2,因为“ MBA1”和“ MBA2”之前已经存在。
由于这两行是唯一的,因此这两行除外。
我应该如何更改我的代码?
按组是具有相同的按变量值的相邻行的序列。
NOTSORTED
用于处理由连续但未排序的值构成的组。
您的所有样本数据的分组大小均为1,因为没有任何id值在列中向下重复。
您可以尝试以下两种技术:
referenceid
和对数据进行排序,<some-other-sequencing-variable>
并按组处理正常。referenceid
和命中数哈希示例(我的sequenceId
===您的join_key
):
data want;
set have;
if _n_ = 1 then do;
declare hash ids();
ids.defineKey('referenceid');
ids.defineData('referenceid', 'sequenceId');
ids.defineDone();
end;
if ids.find() ne 0
then sequenceId = 1;
else sequenceId + 1;
ids.replace();
run;