我想在SAS中创建一个新变量,如果变量“TEXT”中的观察值包含8个数字,则取值为1。问题是,TEXT是一个字符变量。是否可以在SAS中进行某种格式搜索?
答案 0 :(得分:4)
我假设'8个数字'实际上意味着8个数字。对于8个单独的数字,这将是不同的。 所以像下面的代码可能会有所帮助。 修饰符'kd'意味着COMPRESS函数中的KEEP DIGITS在这里具有魔力:
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这样的函数可能很有用。