如何在SAS中更改导入的CSV变量

时间:2018-07-18 19:19:29

标签: csv sas

我在SAS中导入了一个csv,但是原始文件中的格式不正确。我正在使用地址,因此,例如,城市将错误地连接到街道变量,或者邮政编码将在城市变量中。导入后如何设置参数。当我尝试使用设置长度时,它给了我一条消息,说该长度之前已经设置过,我应该使用DATA步骤。我不知道在哪里确切地做到这一点。

2 个答案:

答案 0 :(得分:0)

那么,您可以手动定义将哪些行以及如何读取到SAS中。这是强制导入中的示例。

在这种情况下,只需更改定界符; 。另外,根据您的数据是否具有标题行来正确设置firstOb。除此之外,仅列出变量及其属性。

data WORK.Imported;
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */
infile 'c:\input\datafile.csv' delimiter =';' MISSOVER DSD lrecl=13106 firstobs=2 ;
    informat first_var $15. ;
    informat second_var $24. ;
    informat third_var best32. ;
    /*... add as many as your data has */
    format first_var $15. ;
    format second_var $24. ;
    format third_var best12. ;
    /*... add as many as your data has */
    input
    First_var $
    Second_var $
    CCM
    /*... add as many as your data has */
    ;
    if _ERROR_ then call symputx('_EFIERR_',1);  /* set ERROR detection macro variable */
run;

惰性方法只是将proc导入与guesingingrows = max选项一起使用:

proc import datafile="c:\imput\input.csv" out=imprted replace;
        DELIMITER=";" ;
        getnames=yes;
        guessingrows=MAX; 
run;

请注意,在很大的文件中,这将花费很长时间。通常最好将行设置为“足够大”,例如32k。

有关导入的更多信息,请参见proc import。或更一般地,在importing/exporting

答案 1 :(得分:0)

这个问题也发生在我身上,问题是在输入的csv文件中使用了一些“换行符”。如果将所有换行符替换为空格,请保存文件,然后导入SAS-它将正确导入数据。 简单的方法是:

  1. 按Ctrl + H打开“查找和替换”对话框。
  2. 在“查找内容”字段中,输入Ctrl + J。它看起来是空的,但是您会看到一个小点。
  3. 在“替换为”字段中,输入任何值以替换换行符。通常,避免两个单词意外连接的空间。如果您只需要删除换行符,请将“替换为”字段留空。

See this page for other ways: