首先介绍如何使用SAS。未排序的
我有这个问题 我的代码是首先介绍如何使用SAS。未排序的,sas,Sas,我有这个问题 我的代码是 data step10; set step9; by referenceid NOTSORTED; if first.referenceid then JOIN_KEY=1; ELSE JOIN_KEY+1; run; 然后输出显示 最后两行应该是2,因为前面已经存在“MBA1”和“MBA2” 除此之外,这两行应该是1,因为它是唯一的 如何更改代码?A by group是相邻行的序列,具有相同的by var值 NOTSORTED用于处理由连续但未排序
data step10;
set step9;
by referenceid NOTSORTED;
if first.referenceid then JOIN_KEY=1;
ELSE JOIN_KEY+1;
run;
然后输出显示
最后两行应该是2,因为前面已经存在“MBA1”和“MBA2”
除此之外,这两行应该是1,因为它是唯一的
如何更改代码?A by group是相邻行的序列,具有相同的by var值
NOTSORTED
用于处理由连续但未排序的by值构造的组
所有示例数据都按大小为1的组显示,因为向下看列时没有重复的id值
以下是两种您可以尝试的技术:
- 按
和referenceid
对数据进行排序,并按组处理进行正常处理 - 在处理数据集时,保持
的散列和命中计数referenceid
sequenceId
==您的加入密钥
):
by组是相邻行的序列,具有相同的by var值
NOTSORTED
用于处理由连续但未排序的by值构造的组
所有示例数据都按大小为1的组显示,因为向下看列时没有重复的id值
以下是两种您可以尝试的技术:
- 按
和referenceid
对数据进行排序,并按组处理进行正常处理 - 在处理数据集时,保持
的散列和命中计数referenceid
sequenceId
==您的加入密钥
):
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;