我有这个数据集:
data test;
input Feature_ID Client_ID;
cards;
52004 541111
56222 541111
56300 541111
73222 980002
73600 980002
78006 980002
85000 980002
95001 1000001
98020 1000001
;
run;
我想创建一个标志列,每个客户的最大Feature_ID取1。
结果应如下:
data test;
input Feature_ID Client_ID Flag;
cards;
52004 541111 0
56222 541111 0
56300 541111 1
73222 980002 0
73600 980002 0
78006 980002 0
85000 980002 1
95001 1000001 0
98020 1000001 1
;
run;
我该怎么做?
我做了什么(因为未排序原始数据),所以我开始使用Proc SQL对数据进行排序,方法如下:
proc sql;
create table tab_Trial as select
Feature_ID
,Client_ID
from Test
order by Feature_ID, Client_ID;
quit;
然后尝试此代码,以创建标志列
data Flagging;
set Tab_Trial;
by Client_ID;
if Last.Feature_ID = 1 then Flag = 1;
else Flag = 0;
run;
但是我得到了一个充满0的列标志。
任何帮助将非常感激。
最佳答案
尝试使用last.variable,但首先对数据集进行排序:
data test;
input Feature_ID Client_ID;
cards;
52004 541111
56300 541111
56222 541111
73222 980002
73600 980002
85000 980002
78006 980002
98020 1000001
95001 1000001
;
run;
proc sort data=test out=test_sorted;
by Client_ID Feature_ID;
quit;
data test1;
set test_sorted;
by Client_ID Feature_ID;
if last.Client_Id then flag=1;
else flag=0;
run;
输入:
+------------+-----------+
| Feature_ID | Client_ID |
+------------+-----------+
| 52004 | 541111 |
| 56300 | 541111 |
| 56222 | 541111 |
| 73222 | 980002 |
| 73600 | 980002 |
| 85000 | 980002 |
| 78006 | 980002 |
| 98020 | 1000001 |
| 95001 | 1000001 |
+------------+-----------+
排序的数据集:
+------------+-----------+
| Feature_ID | Client_ID |
+------------+-----------+
| 52004 | 541111 |
| 56222 | 541111 |
| 56300 | 541111 |
| 73222 | 980002 |
| 73600 | 980002 |
| 78006 | 980002 |
| 85000 | 980002 |
| 95001 | 1000001 |
| 98020 | 1000001 |
+------------+-----------+
输出:
+------------+-----------+------+
| Feature_ID | Client_ID | flag |
+------------+-----------+------+
| 52004 | 541111 | 0 |
| 56222 | 541111 | 0 |
| 56300 | 541111 | 1 |
| 73222 | 980002 | 0 |
| 73600 | 980002 | 0 |
| 78006 | 980002 | 0 |
| 85000 | 980002 | 1 |
| 95001 | 1000001 | 0 |
| 98020 | 1000001 | 1 |
+------------+-----------+------+
关于sql - 如何基于功能ID的最大值创建标记列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57200400/