我正在使用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;
我的输出只是名称,其他变量中的值为空。
我研究过使用绝对列指针,但我没有运气。
答案 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