我正在尝试在SAS中创建一个新变量。我使用if逻辑来创建新的字符变量。但是,该变量被截断。如何格式化新变量,以便所有字符都出现?
DATA Clinic;
set stat201.clinic;
rename age_at_consent=Age ldiastolic=dbp lsystolic=sbp ldobp=datebp;
if smoking="" then smoking="Missing";
if smokecat=0 then smokecat_1="Never Smoker";
if smokecat=1 then smokecat_1="Current Everyday Smoker";
if smokecat=2 then smokecat_1="Former Smoker";
if smokecat=9 then smokecat_1="Never Assessed";
attrib smokecat_1 format =$25.;
drop smokecat;
rename smokecat_1= smokecat;
run;
答案 0 :(得分:3)
SAS将根据变量首次出现的时间定义变量。由于第一次出现是在此赋值语句中。
if smokecat=0 then smokecat_1="Never Smoker";
它将被定义为长度为12的字符变量。
在使用变量之前先定义它。您可以使用LENGTH
语句
length smokecat_1 $25;
或ATTRIB
语句来定义变量。
attrib smokecat_1 length=$25;
附加$25.
格式不会更改变量的长度。
这仅表示您希望SAS使用25个字符来显示值。但是变量仍然只有12个字符长。无需将任何格式附加到变量。格式是有关如何显示值的说明,而SAS已经知道如何显示字符值。
答案 1 :(得分:0)
为补充汤姆(Tom)的上述回答:
SAS将根据变量 type和length 的首次出现时间进行定义。
我同意在使用变量之前先定义变量是一种好习惯。