读取数据线后丢失数据

时间:2015-10-06 01:57:23

标签: sas

我正在使用Applied Statistics和SAS Programming练习12.6。参数:使用列输入,读取NAME,GENDER和DOB,其中NAME位于1-10列中,Gender位于第12列,DOB位于第13-22列。请注意,对于列输入,您必须将出生日期作为字符读取。您可以使用以下示例(我在尝试时写这个)。

a)将出生日期定义为角色是一个好主意吗?为什么?    我的回答:不,不是一个好主意,因为我们可以使用这个日期,以其他方式直接计算。

b)将DOB从字符更改为数字并计算该人的实际日期。

我尝试使用此代码解决问题:

DATA PROB12_6;                                                                                                                          

 INPUT     NAME $ 1-10                                                                                                                  
           GENDER $ 12                                                                                                                  
           DOB $  MMDDYY10. 13-22;                                                                                                            

 AGE=yrdif(input(dob,mmddyy10.),today(), 'Age');                                                                                        

DATALINES;                                                                                                                              
          1         2            

01234567890123456789012                                                                                                                 

Cody        M05/11/1981                                                                                                                 
McMaster    F11/11/1967                                                                                                                 
Bill Smith  M12/25/1999                                                                                                                 
;                                                                                                                                       


PROC PRINT DATA=PROB12_6 (FIRSTOBS=4);                                                                                                  
RUN;

我的输出只是名称,其他变量中的值为空。

我研究过使用绝对列指针,但我没有运气。

1 个答案:

答案 0 :(得分:0)

第一个问题:

 DOB $ 13-22;                                                                         

在此处删除格式。你在这里初始化一个字母数字变量,并尝试将其格式化为数字日期,你不能在这里格式化它。

第二个问题:

也许这是stackexchange中的一个格式问题,但是我复制了你的代码,为了实现这个功能,我必须使用这个值(性别在第13位):

 INPUT     NAME $ 1-10
           GENDER $ 13 
           DOB $ 14-23;  

当我测试时,这会导致这种情况:

                            .
Cody        M   05/11/1981  34.405479452
McMaster    F   11/11/1967  47.901369863
Bill Smith  M   12/25/1999  15.780821918