SAS 中用户定义的格式

问题描述 投票:0回答:1

我这里有这段代码,但它没有按预期工作:

data disease;
input diagcode$;
datalines;
350
290
800
;
run;

proc format;
value $codetwo
'350' = 'Malaria'
'290' = 'Social Anxiety Disorder'
'800' = 'Leg Injury'
;
run;

data diseasereal;
set disease;
diagdesc = put(diagcode, $codetwo.);
run;

所需输出:

诊断代码 诊断代码描述
350 疟疾
290 社交焦虑症
800 腿部受伤

电流输出:

诊断代码 诊断代码描述
350 350
290 290
800 800

我的代码有什么问题?

sas format
1个回答
0
投票

您发布的代码没有任何问题。

DIAGCODE 的实际值必须与 FORMAT 正在查找的值不同。例如,如果我创建带有前导空格的 DIAGCODE 值:

data disease;
  input diagcode $char4.;
datalines;
350
 350
290
 290
800
 800
;

然后我得到带有前导空格的值的结果。

OBS    diagcode    diagdesc

 1       350       Malaria
 2        350       350
 3       290       Social Anxiety Disorder
 4        290       290
 5       800       Leg Injury
 6        800       800

查看正常 LISTING 输出中的值,而不是 ODS 输出中的值,因为 ODS 输出不显示前导空格。

或者使用 $QUOTE 或 $HEX 格式来更好地查看变量中的实际内容。

© www.soinside.com 2019 - 2024. All rights reserved.