我这里有这段代码,但它没有按预期工作:
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 |
我的代码有什么问题?
您发布的代码没有任何问题。
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 格式来更好地查看变量中的实际内容。