2017-04-20 68 views
0

我有結構化的這樣一個數據集:分組邏輯:如果條件SAS

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 

但是,我能夠獲得第一個clientID,段和序列變量,但只有第一個客戶端ID和它旁邊的段在輸出表HISTORICAL_SEGMENTS3中,但只有第一個記錄。

我如何包括邏輯輸出,同時通過CLIENT_ID和yearmonth分組 基本輸出鱗次櫛比每次段比前Yearmonths段

回答

1

不同的你基本上已經存在。只需爲HISTORICAL_SEGMENTS3數據集添加另一個計數變量,併爲以前的段觀察添加滯後變量。

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; 
+0

謝謝你!這正是我需要的。 –

2

這可以通過命令來簡單地實現 「notsorted」

data abc; 
input client_id $5. segment $2. yearmonth ; 
cards; 
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 
; 
run; 


data abc1; 
set abc; 
by client_id segment notsorted; 
if first.segment; 
if first.client_id then new_sequencing_variable = 0; 
new_sequencing_variable + 1; 
run; 

我的輸出:

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 

讓我知道任何澄清的情況下。