在SAS中使用INFILE for txt文件时如何计算空格?

时间:2017-09-14 01:34:07

标签: sas

我目前只是从.txt文件中导入以下数据。

George Washington      02/22/1732 12/14/1799
John Adams             10/19/1735 07/04/1826
Thomas Jefferson       04/13/1743 07/04/1826
James Madison          03/16/1751 06/28/1836
James Monroe           04/28/1758 07/04/1831
Andrew Jackson         03/15/1767 06/08/1845
John Quincy Adams      07/11/1767 02/23/1848
William Henry Harrison 02/09/1773 04/04/1841

我使用以下代码:

 data presidents;
     infile "G:\DeadPresidents.txt";
     input Name $23. Birth mmddyy10. Death mmddyy10.;
 run;

这允许我正确地读取姓名和出生日期,但它不会在死亡日期读取,因为SAS认为两个日期之间的空格是死亡变量的一部分。如果我改变

Birth mmddyy10.

Birth mmddyy11.它运行正常。

有没有办法让SAS帐户用于分隔txt文件中的变量的空间?我希望能够使用mmddyy10,因为它是实际日期变量的长度。

1 个答案:

答案 0 :(得分:3)

你可以移动光标。相对运动

input Name $23. Birth mmddyy10. +1 Death mmddyy10.;

或绝对

input Name $23. @24 Birth mmddyy10. @35 Death mmddyy10.;

或者如果你知道BIRTH和DEATH都不是空白,那么使用修改后的列表模式

input Name $23. Birth :mmddyy10. Death :mmddyy10.;

请注意,如果将INFORMAT分配给变量并使用列表模式输入,则无需指定信息的宽度,因为SAS无论如何都会忽略它,并将其使用的宽度调整为行上的数据。 / p>

input Name $1-23 Birth Death ;
informat birth death mmddyy. ;