Sas 带中频条件的分组逻辑
我有一个结构如下的数据集:Sas 带中频条件的分组逻辑,sas,sas-macro,Sas,Sas Macro,我有一个结构如下的数据集: CLIENT_ID Segment Yearmonth XXXX A 201305 XXXX A 201306 XXXX B 201307 XXXX B 201308 XXXX C
CLIENT_ID Segment Yearmonth
XXXX A 201305
XXXX A 201306
XXXX B 201307
XXXX B 201308
XXXX C 201309
XXXX A 201310
YYYY D 201306
YYYY D 201307
YYYY C 201308
YYYY D 201309
ZZZZ E 201309
ZZZZ E 201309
ZZZZ E 201309
这就是我想要得到的结果
CLIENT_ID Segment New_sequencing_Variable
XXXX A 1
XXXX B 2
XXXX C 3
XXXX A 4
YYYY D 1
YYYY C 2
YYYY D 3
ZZZZ E 1
到目前为止,我掌握的代码是:
HISTORICAL_SEGMENTS2 HISTORICAL_SEGMENTS3 ;
set GENERAL.HISTORICAL_SEGMENTS ;
by Client_ID ;
if first.Client_ID then count = 0 ;
count + 1 ;
output HISTORICAL_SEGMENTS2 ; *output every record;
if first.Client_ID then output HISTORICAL_SEGMENTS3 ; *output first of each group;
run;
我需要像这样的东西:
if previous.segment <> current.segment then output HISTORICAL_SEGMENTS3
如果是previous.segment current.segment,则输出历史_SEGMENTS3
但是,我能够在输出表HISTORICAL_SEGMENTS3中获取第一个clientID、段和序列变量,但只能获取第一个客户端ID及其旁边的段,而只能获取第一条记录
在按客户机id和yearmonth分组时,如何包含输出的逻辑
基本上,每次段与前一年月段不同时,都会输出一行。基本上,您已经存在了。只需为历史_SEGMENTS3数据集添加另一个计数变量,并为segment的先前观测添加一个滞后变量
data HISTORICAL_SEGMENTS2 HISTORICAL_SEGMENTS3;
set HISTORICAL_SEGMENTS;
by Client_ID;
if first.Client_ID then do;
count = 0;
count2 = 0;
end;
count + 1;
prev_segment = lag(segment);
if prev_segment ne segment then do;
count2 + 1;
output HISTORICAL_SEGMENTS3;
end;
output HISTORICAL_SEGMENTS2;
drop prev_segment;
run;
你基本上已经在那里了。只需为历史_SEGMENTS3数据集添加另一个计数变量,并为segment的先前观测添加一个滞后变量
data HISTORICAL_SEGMENTS2 HISTORICAL_SEGMENTS3;
set HISTORICAL_SEGMENTS;
by Client_ID;
if first.Client_ID then do;
count = 0;
count2 = 0;
end;
count + 1;
prev_segment = lag(segment);
if prev_segment ne segment then do;
count2 + 1;
output HISTORICAL_SEGMENTS3;
end;
output HISTORICAL_SEGMENTS2;
drop prev_segment;
run;
这可以通过命令“notsorted”简单地实现 我的输出:
client_id segment new_sequencing_variable
XXXX A 1
XXXX B 2
XXXX C 3
XXXX A 4
YYYY D 1
YYYY C 2
YYYY D 3
ZZZZ E 1
如果有任何澄清,请告诉我 这可以通过命令“notsorted”简单地实现 我的输出:
client_id segment new_sequencing_variable
XXXX A 1
XXXX B 2
XXXX C 3
XXXX A 4
YYYY D 1
YYYY C 2
YYYY D 3
ZZZZ E 1
如果有任何澄清,请告诉我 谢谢你!!这正是我需要的。谢谢你!!这正是我需要的。