我是sas的新手,以前做过oracle SQL
我以前也做过类似的问题
我认为这个问题可以解决这个问题。
但
我被卡住了。
我的代码是这样的
data stepstep;
input emplid KEY:$3. count;
cards;
11 11Y 1
11 11Y 2
11 11N 3
11 11N 4
11 11Y 5
11 11N 6
12 12Y 1
12 12Y 2
12 12N 3
;
run;然后我试着
data stepstep2;
set stepstep;
by key emplid NOTSORTED;
if first.key AND first.emplidthen rank=1;
ELSE rank+1;
run;输出是这样的

我想展示一下
emplid key count rank
11 11Y 1 1
11 11Y 2 1
11 11N 3 2
11 11N 4 2
11 11Y 5 3
11 11N 6 4
12 12Y 1 1
12 12Y 2 1
12 12N 3 2所以新的emplid出现了,我希望"Rank“回到从1开始计数。
所以在这个例子中,当第一个emplid "12“出现时,排名返回到1
我该怎么做呢?
发布于 2020-02-03 23:46:53
你需要适当地利用你的BY组,我认为对于初学者来说,你把它们的顺序搞错了。试着这样做:
data stepstep2;
set stepstep;
by emplid KEY NOTSORTED;
if first.emplid then rank=1; *start of each emplid group;
ELSE if first.key rank+1; *start of each new key;
run;发布于 2020-02-03 23:53:01
您还可以使用sum语句:
data stepstep2;
set stepstep;
by emplid key NOTSORTED;
if first.emplid then rank=0;
rank + first.key;
run;https://stackoverflow.com/questions/60042097
复制相似问题