sas读取以空格作为分隔符的文件
我有一个数据文件,它使用空格作为分隔符。我想写一个数据步骤,将此文件读入sas 在大多数情况下,字段不是由单个空格分隔的,而是由10多个空格分隔的。我已经使用notepad++进行了检查,分隔符不是制表符sas读取以空格作为分隔符的文件,sas,datastep,informat,Sas,Datastep,Informat,我有一个数据文件,它使用空格作为分隔符。我想写一个数据步骤,将此文件读入sas 在大多数情况下,字段不是由单个空格分隔的,而是由10多个空格分隔的。我已经使用notepad++进行了检查,分隔符不是制表符 137 3.35 Afghanistan 2009-07-08 154 2.43 Albania 2009-07-22 101
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
我试着为这些人写信息陈述,但没有成功
以下是我到目前为止所做的
输入casedt1id:$3。续:4个国家和32美元。案例1 yymmdd10
这只正确读取第一个字段,其余字段将丢失值
问题是写一个informat语句来读取这些数据
谢谢你的帮助
问候
jana您可以使用
@
符号来控制指针在线路上的读取位置。看起来每个变量都有一个固定的起始列
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
;
您可以使用
@
符号控制指针在该行上的读取位置。看起来每个变量都有一个固定的起始列
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
;
在我看来,这就像是固定列数据。然后,问题是使用具有固定列数据的信息。这应该行得通
input casedt1id $ 1-3 contntid 4-27 country $28-60 casedt1 yymmdd10.;
format casedt1 yymmdd10.;
诀窍是确保指针在读取格式化文本时位于正确的位置。因此,在上面的声明中,这是通过让它读到第60列来完成的。现在,当您准备好读取日期时,您位于第61列。您还可以使用+
或@
移动指针
... @61 casedt1 yymmdd10. ...
如果您正在读取可变长度的文件(现在大多数文件都是可变长度的),请确保将TRUNCOVER选项添加到infle语句中,以防日期丢失或使用少于10个字符写入。这在我看来像是固定列数据。然后,问题是使用具有固定列数据的信息。这应该行得通
input casedt1id $ 1-3 contntid 4-27 country $28-60 casedt1 yymmdd10.;
format casedt1 yymmdd10.;
诀窍是确保指针在读取格式化文本时位于正确的位置。因此,在上面的声明中,这是通过让它读到第60列来完成的。现在,当您准备好读取日期时,您位于第61列。您还可以使用+
或@
移动指针
... @61 casedt1 yymmdd10. ...
如果您正在读取可变长度的文件(现在大多数文件都是可变长度的),请确保在infle语句中添加TRUNCOVER选项,以防日期丢失或使用少于10个字符写入。数据是否真的像您的示例那样位于固定列中?您是否尝试告诉SAS每个变量要读取哪些列?数据是否真的像您的示例那样位于固定列中?您是否尝试告诉SAS每个变量要读取哪些列?