【发布时间】:2015-05-04 02:45:50
【问题描述】:
我正在处理一些 SAS 代码并遇到了问题。我正在尝试使用体重和身高计算 6000 多名患者的 BMI(因此不能选择数据线)。高度当前输入为 508(5 英尺、08 英寸等),每个 obs。所以我想我会尝试结合 substr 和 input 语句从 3 位代码中提取第一个数字,然后对英寸执行相同的操作。当我拥有这两个新变量时,我将能够完成剩下的工作,但我似乎无法让这个特定的数据步骤发挥作用。
这就是我所拥有的:
data work.bmi_prep;
set work.fixedmissing;
HEIGHTFT=input(substr(HEIGHT3,1,1),3.);
run;
如果有人能告诉我哪里出错了,那就太好了。
【问题讨论】:
-
您得到什么错误或不需要的输出?
-
我想这可能是前导空格的问题。使用这样的压缩函数 ..HEIGHTFT=input(substr(compress(HEIGHT3),1,1),3.);
-
您的变量 HEIGHT3 是字符还是数字?如果它是数字,则使用像 HEIGHTFT=input(substr(put(HEIGHT3,3.),1,1),3.); 这样的 put 函数也可以使用strip函数。
-
该代码出现错误的主要原因有以下三个: 1) 源变量和输出变量中的数字或字符,根据此差异使用 put 或 input。 2) substr 只接受 char 变量。 3) 字符变量在总长度的左侧(尾随空格),数字在单元格长度的右侧(前导空格),如果要从 num 转换为,请使用 left() 函数(或类似的字符串函数)字符
标签: sas