在SAS中的何处指定输入@?

在SAS中的何处指定输入@?,sas,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后面 因为那是一个写得很糟糕的输入语句。您可以通过多种方式指定输入,并混合使用几种不同的方式来执行碰巧允许混合(大部分)的操作。有关更多信息,请阅读

在下面的代码中

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
后面

因为那是一个写得很糟糕的输入语句。您可以通过多种方式指定输入,并混合使用几种不同的方式来执行碰巧允许混合(大部分)的操作。有关更多信息,请阅读on输入

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

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.;
在我的经验中,还有其他一些选项(如命名输入)不经常使用


在您的特定示例中,第一个变量是使用列输入[
ID1
表示“将1个字符的数字从位置1读入id”],然后使用格式化输入[
@3 date mmddyy11]读取第二个变量。
表示“从位置3[-13]读取11个字符的日期变量”使用日期信息将其转换为数字。“]它还表示有人给了您不太熟悉SAS的代码,因为
mmddyy10。
是正确的信息-第11个字符没有帮助。

谢谢!!!我很惊讶这段代码有这么多问题,因为我确实从一个非常好的源代码中获取了它。我想,人们会养成坏习惯:)混合输入本身并没有什么问题,但它可能会让人困惑,所以如果出于某种实际原因不需要的话,就应该真正避免。