在SAS中指定输入@的位置?

时间:2014-04-01 18:00:40

标签: sas

在以下代码中

data temp2;
input id 1 @3 date mmddyy11.;
cards;
1 11/12/1980
2 10/20/1996
3 12/21/1999
;
run;

1 @3符号是什么意思?我认为1意味着id是数据中的第一个字符。我知道@3表示date变量以第三个字符开头,但为什么它位于date前面,而1位于id之后?

1 个答案:

答案 0 :(得分:2)

因为这是一个写得不好的输入语句。您可以通过多种方式指定输入,并且混合使用几种不同的方式来执行允许混合的操作(主要是)。有关详细信息,请阅读输入中的SAS documentation

您可以使用的一些常见样式:

input @1 id $5.;  *Formatted input.  Allows specification of start position and informat, more useful if using date or other informat that is not just normal character/number.;
input id str $ otherstr $ date :date9.; *List input. This is for delimited text (like a CSV), still lets you specify informat.
input @'ID:' id $5.; *A special case of formatted input.  allows you to parse files that include the variable name, useful for old style files and some xml/json/etc. type files;
input x 1-10 y 11-20; *Column input. Not used very commonly as it's less flexible than start/informat style.;

在我的经验中,还有其他选项(例如命名输入)不经常使用。

在您的具体示例中,读入第一个变量,列输入[id 1表示'从位置1读取1个字符数字到id']然后使用格式化输入[{{读取第二个变量1}}说'从位置3 [-13]读取一个11个字符的日期变量到一个数字,使用日期信息将其翻译成一个数字。']它还说有人给你那些不熟悉SAS的代码,因为@3 date mmddyy11.是正确的信息 - 第11个字符无济于事。