我正在尝试将.CSV文件导入SAS数据集,但遇到了一些麻烦。这是一行示例输入:
Foo,5,10,3.5
Bar,2,3,1.0
我遇到的问题是,行结尾“3.5”和“1.0”没有被正确解释为变量值(相反,SAS抱怨它们是无效值,给我一个NOTE: Invalid data for VARIABLE
错误) 。但是,当我在行尾添加一个逗号时,如下所示:
Foo,5,10,3.5,
Bar,2,3,1.0,
然后一切正常。有没有办法让我可以在不修改源文件的情况下进行导入工作?
目前,我的DATA步骤的INFILE语句包含DSD
,DLM=','
和MISSOVER
选项。
答案 0 :(得分:3)
将此数据存储在Windows环境中的.csv文件中
Foo,5,10,1.5
Bar,2,3,2.1
Foo,5,10,3.5
Bar,2,3,4.1
此代码有效(在Windows机器上本地运行SAS)
filename f 'D:\Data\SAS\input.csv';
data input;
infile f delimiter=',';
input char1 $ num1 num2 num3;
Run;
正如@itzy所提到的,环境很重要。更多信息将有助于解决方案
当您处理来自不同环境的数据时,您可以使用TERMSTR option on the INFILE statement告诉SAS如何终止数据行。
答案 1 :(得分:2)
这很可能与Unix和Windows中line endings的不同代码有关。我猜你的数据来自与你运行SAS的操作系统不同的操作系统。
解决方案是将换行代码更改为正确的操作系统。如果您在unix系统上运行SAS,请尝试dos2unix
命令。如果您运行的是Windows,则可以使用UltraEdit或Notepad ++等文本编辑器编辑CSV文件,并以Windows格式保存文件。