为什么我的SAS列输入没有';不行?
我使用了列输入:为什么我的SAS列输入没有';不行?,sas,Sas,我使用了列输入: input PRODUCT_ID $ 1-47 PRODUCT_NDC $ 48-56 NDC_PACKAGE_CODE $ 58-69 PACKAGE_DESCRIPTION $ 71-325 ; 运行 除“包装说明”外,所有列均正确导入 我认为这是因为“PACKAGE_DESCRIPTION”的内容超过了SAS文本限制(数据库中有一些很长的描述)。我该如何解决这个问题 提前谢谢 很可能是因为infle语句上的设置无效。 添加LRECL=和TRUNCOVER选项 inf
input
PRODUCT_ID $ 1-47
PRODUCT_NDC $ 48-56
NDC_PACKAGE_CODE $ 58-69
PACKAGE_DESCRIPTION $ 71-325
;
运行
除“包装说明”外,所有列均正确导入
我认为这是因为“PACKAGE_DESCRIPTION”的内容超过了SAS文本限制(数据库中有一些很长的描述)。我该如何解决这个问题
提前谢谢 很可能是因为
infle
语句上的设置无效。
添加LRECL=和TRUNCOVER选项
infile 'myfile.txt' lrecl=500 truncover ;
input
PRODUCT_ID $ 1-47
PRODUCT_NDC $ 48-56
NDC_PACKAGE_CODE $ 58-69
PACKAGE_DESCRIPTION $ 71-325
;
首先,正如我在评论中提到的,如果SAS预期的换行符可能不是正确的类型,我会尝试这样的方式(同时添加@Tom的推荐,也很好): 如果
LF
没有给出想要的结果,那么尝试使用CRLF
,然后(尽管这种情况不常见),CR
可以添加到infle
语句的其他选项包括:
通常是ENCODING=
、lat1
或utf8
中的一种。您可以首先在高级文本编辑器(如Notepad++、EmEditor或CoolEdit)中打开文件来检查这一点——它将显示(通常在较低的状态栏中)所使用的编码。同时,您可以确定使用哪种换行符,以便可以使用带有ansi
选项的适当换行符TERMSTR=
声明您的输入文件具有固定长度的变量(不确定这将如何影响读取,但可能值得一试)李>RECFM=F
PPS:我认为软件包描述栏的长度本身并没有问题。那么SAS日志中的注释怎么说?它将告诉您输入行的长度。
data want;
infile 'myfile.txt' lrecl=500 truncover TERMSTR=LF;
input
PRODUCT_ID $ 1-47
PRODUCT_NDC $ 48-56
NDC_PACKAGE_CODE $ 58-69
PACKAGE_DESCRIPTION $ 71-325
;
run;