我正在从应用统计和SAS编程的练习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
Cody M05/11/1981
McMaster F11/11/1967
Bill Smith M12/25/1999
;
PROC PRINT DATA=PROB12_6 (FIRSTOBS=4);
RUN;
我的产量只有名字,在其他变量空值。
我研究了使用绝对列指针,但我没有运气。
欢迎。请充分解释您的目标以及您的预期产出。您是否正在通过示例使用Learning SAS:Ron Cody的程序员指南?这可能有助于添加完整的标题。 – LJW
DOB不应作为字符读取,日期以数字形式存储。你可能在日志中收到错误,你可以发布吗? – Reeza
是的,这是事实,但如果我没有曲解练习说的话,必须输入类似的字符,然后在代码中改变它并使用它来计算年龄。但是我卡在打印部分,只有打印名称。我希望现在更清楚。谢谢。 – DarioC