1

如果变量“TEXT”中的观察值包含 8 个数字,我想在 SAS 中创建一个新变量,该变量取值为 1。问题是,TEXT 是一个字符变量。是否可以在 SAS 中进行某种格式搜索?

4

1 回答 1

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 等功能也可能有用。

于 2013-08-20T10:42:36.627 回答