CSV到SAS数据集:没有行 - 最终逗号会导致问题

时间:2012-01-29 22:43:28

标签: csv sas

我正在尝试将.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语句包含DSDDLM=','MISSOVER选项。

2 个答案:

答案 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格式保存文件。