我有一个使用空格作为分隔符的数据文件。我想编写一个数据步骤以将该文件读入sas。
在大多数情况下,这些字段之间不会被单个空格分隔。我已经使用notepad ++进行了检查,并且定界符不是制表符。
137 3.35 Afghanistan 2009-07-08
154 2.43 Albania 2009-07-22
101 1.22 Antigua and Barbuda 2009-06-24
155 4.13 Federated States of Micronesia 2009-07-22
我尝试为这些内容编写informat语句,但未成功
这是我到目前为止所做的
输入casedt1id:$ 3。竞争性:4国家:&$ 32。 casedt1 yymmdd10。
这只会正确读取第一个字段,其余字段会丢失值。
问题是编写一个informat语句以读取此数据?
感谢您的帮助。
致谢 贾纳(Jana)
答案 0 :(得分:2)
您可以使用@
符号来控制指针在行上的读取位置。看起来每个变量都有固定的起始列。
data want;
input @1 casedt1id :$3. @14 contntid :4 @28 country :&$32. @61 casedt1 :yymmdd10.;
format casedt1 yymmdd10.;
datalines;
137 3.35 Afghanistan 2009-07-08
154 2.43 Albania 2009-07-22
101 1.22 Antigua and Barbuda 2009-06-24
155 4.13 Federated States of Micronesia 2009-07-22
;
答案 1 :(得分:0)
对我来说,这看起来像固定列数据。然后,问题是使用具有固定列数据的INFORMAT。这应该起作用
th
技巧是确保指针在尝试读取格式化的文本时位于正确的位置。因此,在上面的语句中,通过告诉它读取COUNTRY的第60列来完成此操作。因此,当您准备好阅读日期时,现在位于第61列。您也可以使用td
或input casedt1id $ 1-3 contntid 4-27 country $28-60 casedt1 yymmdd10.;
format casedt1 yymmdd10.;
移动指针。
+
如果要从可变长度文件中读取(现在大多数文件都是可变长度),请确保在INFILE语句中添加TRUNCOVER选项,以防万一日期丢失或少于10个字符写入。