2013-08-20 121 views
1

我想在SAS中創建一個新變量,如果變量「TEXT」中的觀察結果包含8個數字,則該變量的值爲1。問題是,TEXT是一個字符變量。是否有可能在SAS中進行某種格式的搜索?SAS特定觀察格式

回答

4

我假設'8個數字',你實際上意味着8位數字。對於8個單獨的數字,這將是不同的。 所以像下面的代碼可能會有所幫助。 修飾語「KD」意守位數壓縮功能在這裏的神奇:

data indata; 
length TEXT $20; 
input TEXT; 
datalines; 
a 
123 
12345678 
A12345678 
; 
run; 

data outdata; 
set indata; 
length TEXT_DIGITS $20 _8_DIGIT_INDICATOR 3; 
TEXT_DIGITS = compress(TEXT, , 'kd'); 
if length(TEXT_DIGITS)=8 then _8_DIGIT_INDICATOR = 1; 
run; 

調整邏輯,因爲你需要 - 例如如果輸入值中沒有其他字符是允許的或其他的。 也像ANYDIGIT,NOTDIGIT的功能可能是有用的。

+0

真的有幫助。我的意思是數字,是的。如果我不想在數字被例如字母分隔的情況下進行觀察,那麼「。」或「/」,有沒有簡單的方法來刪除這些? –

+0

此外,在此代碼中,該過程僅在一個數據集indata上完成。是否有可能讓sas爲大量數據集做好準備,比如說一百個數據集,都包含在一個庫中? –