2013-08-20 79 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为大量数据集做好准备,比如说一百个数据集,都包含在一个库中? –