如何读取流内数据

时间:2018-09-29 06:01:14

标签: sas

我知道这是一个非常基本的问题,但是我确实遇到了麻烦。

我编写了以下代码,我要做的就是正确地读取数据,但是我找不到找到方法来指示SAS读取BMI。

我想做两件事。

1),让SAS存储完整的数字,包括所有小数。 2),在打印时,我想将数字近似到两个小数点。

data HW02EX01;
  input Patient 1-2  Weight 5-7 Height 9-10 Age 13-14 BMI 17-26 Smoking $ 29-40 Asthma $ 45-48;
  cards;
14  167 70  65  23.9593878  never           no
run;

注意:由于显示屏变得很难看且难以手动编辑,因此我只留下了第一个观察结果。

2 个答案:

答案 0 :(得分:2)

朋友。

以下代码也许有用:

data HW02EX01_;
    input Patient Weight Height Age BMI Smoking : $20. Asthma $10.;
    format BMI 32.2;
    cards;
14 167 70 65 23.9593878 never no
;

通过评论,我想指出一些细节:

  • 如果输入数据的长度固定,请使用在输入语句中的代码中建议的列读取方法。如果不是,请使用列表读取条目(假设输入数据之间有一个定界符)。
  • 当SAS读取列表形式时,它将转换并保存数值的所有数字。因此,您也不必担心读取小数。
  • 要以自己喜欢的方式显示数值,可以使用format语句分配数值的表示形式。在这种情况下,我们使用两位小数,我们使用格式“ w.d”。其中w是可以出现的数字的总长度,d表示要显示的小数位数。应该提到的是,格式不会更改变量的值,只会更改其表示形式。
  • 使用cards语句时,不需要使用run语句。

我希望它会有用。

答案 1 :(得分:1)

请参阅代码中的注释,特别是LENGTHFORMATINFORMAT语句的用法,以控制数据的输入和输出外观。

data HW02EX01;
    *specify the length of the variables;
    length patient $8. weight height age bmi 8. smoking asthma $8.; 


    *specify the informats of the variables; 
    *an informat is does the variable look like when trying to read it in;
    informat patient $8. weight height age bmi best32.;

    *formats control how infomraiton is displayed in output/tables;
    format bmi 32.2 weight height age 12.;

    input Patient $ Weight Height Age BMI Smoking  Asthma ;
    cards;
14 167 70 65 23.9593878 never no
;

run;