SAS:无法理解在此代码中使用'+1'?

时间:2016-03-10 18:35:03

标签: input sas

我使用以下代码读取SAS中的数据,给出的是我尝试过的代码

data libcards;
infile datalines;
input name $11. birthdate date9. issuedate mmddyy10.;
datalines;
A. Jones     1jan60    9-15-03
M. Rincon   05OCT1949 02-29-2000
Z. Grandage 18mar1988 10-10-2002
K. Kaminaka 29may2001 01-24-2003
;
run;

毋庸置疑,除了第一行的日期之外,没有正确读取日期。然后我改变了格式,但它仍然无法正常工作。然后我查找了解决方案,这是给出的代码。

 data libcards;
 infile datalines;
 input name $11. +1 birthdate date9. +1 issuedate mmddyy10.;
 datalines;
 A. Jones     1jan60    9-15-03
 M. Rincon   05OCT1949 02-29-2000
 Z. Grandage 18mar1988 10-10-2002
 K. Kaminaka 29may2001 01-24-2003
 ;
 run;

这段代码完美无缺。我可以看到差异是“+1”部分,但我不明白它是如何工作的。我正在使用的这本书没有任何解释。

谁能告诉我这里发生了什么?谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

+n将指针移动n列,在这种情况下,只向右移动1列以读取数据。 This SAS文档页面可能会提供更多详细信息。

答案 1 :(得分:2)

要阅读此文件,您可以使用格式化输入(对于第一个字段)和"格式已修改"的组合。列出其他两个字段的输入 名称:格式。 告诉SAS使用列表输入和特定的信息。您也可以使用INFORMAT语句将信息与变量相关联。

names(agyrw)
#[1] "company"   "value.1993" "value.1994" "share.1993" "share.1994"
names(agyrw2)
#[1] "company"   "value.1993" "value.1994" "share"  

您可能希望将FORMAT与日期变量相关联。

enter image description here