如何在sas中更改导入的csv变量
我在SAS中导入了csv,但是原始文件中的格式不正确。我使用的是地址,例如,城市将错误地连接到street变量,或者邮政编码将位于city变量中。导入后如何设置参数。当我尝试使用set length时,它给了我一条消息,告诉我之前已经设置了长度,我应该使用数据步骤。我不知道具体在哪里做这件事 那么,您可以手动定义哪些行以及如何读取到SAS中。下面是一个来自Proc import的示例 只需更改分隔符在这种情况下。此外,根据您的数据是否具有标题行,请正确设置第一个OBS。除此之外,只需列出变量及其属性如何在sas中更改导入的csv变量,csv,sas,Csv,Sas,我在SAS中导入了csv,但是原始文件中的格式不正确。我使用的是地址,例如,城市将错误地连接到street变量,或者邮政编码将位于city变量中。导入后如何设置参数。当我尝试使用set length时,它给了我一条消息,告诉我之前已经设置了长度,我应该使用数据步骤。我不知道具体在哪里做这件事 那么,您可以手动定义哪些行以及如何读取到SAS中。下面是一个来自Proc import的示例 只需更改分隔符在这种情况下。此外,根据您的数据是否具有标题行,请正确设置第一个OBS。除此之外,只需列出变量及其
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;
惰性方法只是使用带有guessingrows=max选项的proc导入:
proc import datafile="c:\imput\input.csv" out=imprted replace;
DELIMITER=";" ;
getnames=yes;
guessingrows=MAX;
run;
请注意,在非常大的文件中,这将花费很长时间。通常最好将行设置为“足够大”,如32k
有关导入的详细信息,请参阅。或者更一般地说,这个问题也发生在我身上,问题是输入csv文件中使用了一些“换行符”。如果用空格替换所有换行符,保存文件,然后在SAS中导入-它将正确导入数据。 做到这一点的简单方法是:
显示一些示例csv数据,描述如何导入,以及您尝试的SAS代码示例。显示您的代码。听起来像是在SET语句之后添加了一个LENGTH语句,以便SAS在查看传入数据集中的变量时已经定义了变量长度。