2017-10-17 268 views
1

這可能很簡單。SAS:通過枚舉創建類

我需要創建一個類似於一個順序的變量,但順序只會在每次第二次觀察之後纔會增加。

在此先感謝!

date order 
1-1-10 1 
2-1-10 1 
3-1-10 2 
4-1-10 2 
5-1-10 3 
6-1-10 3 
7-1-10 4 
7-1-10 4 

etc 

回答

2

您將使用兩個主要工具:mod函數和sum語句。 sum語句看起來像不正確的語法,但它是retain的特殊情況。

_N_是一個特殊的變量,充當您的觀察計數器。每當您的data步驟從頂部到底部循環(即從datarun),_N_遞增1。

通過在_N_上使用mod,我們可以對結果爲1的每兩個觀察值增加一個計數器。換句話說,如果您將觀測計數除以2並得到餘數1,則將1加1 order

例如:

_N_ _N_/2 Remainder Operation Value 
1 1/2  1   0+1   1 
2 2/2  0   N/A   1 
3 3/2  1   1+1   2 
4 4/2  0   N/A   2 
5 5/2  1   2+1   3 
6 6/2  0   N/A   3 

最終,我們正在做的,我們在特定的條件下增加一些值的操作,隨身攜帶着,並重復。

這怎麼代碼如下:

data want; 
    set have; 

    if(mod(_N_, 2) = 1) then order+1; 
run; 
+2

或者因爲MOD(INT; 2)返回0或1,你可以簡單地使用'爲了+ MOD(_N_,2);' – Tom

0

在數據步驟中,您可以使用自動變量_n_(例如, ceil(_n_/2)

在SQL中,monotonic()函數可以做同樣的工作。