SAS创建新变量,它是现有变量的第一个数字

时间:2015-05-04 02:45:51

标签: sas

我正在处理一些SAS代码并遇到了一个问题。我正在尝试使用体重和身高来计算6000多名患者的BMI(因此数据不是一种选择)。高度目前输入508为5英尺,08英寸,依此类推每个障碍物。所以我想我会尝试将substr和input语句组合起来从3位数代码中拉出第一个数字,然后对英寸进行相同的操作。当我有这两个新变量时,我将能够完成其余的工作,但我似乎无法让这个特定的数据步骤起作用。

这就是我所拥有的:

data work.bmi_prep;
set work.fixedmissing;
HEIGHTFT=input(substr(HEIGHT3,1,1),3.);
run;

如果有人能告诉我哪里出错了那会很棒。

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中所说,您遇到的错误可能是由于输入字符串中的前导空格。 处理包含数字的字符变量时,一个好的规则是在使用或从该变量中提取数字之前应用left()或strip()或compress()函数。

在你的例子中,使用字符串处理函数(作为input& substr)并不是处理HEIGHT3变量的最简单方法。 在数学公式中查找字符变量时,可以使用SAS应用的自动字符到数字转换。

在以下代码中,heightft公式将触发此转换,自动处理前导空格。

data test;
    height3= '   508';
    heightft= int(height3/100);
    heightin= height3-(heightft*100);
run;

height3变量中存在非数字字符将导致缺失值,就像使用input()函数一样。