我有一个特别的问题 . 我已经导出了一个csv文件,我在某些列上需要将数据放入quoation-marks中,因为前导零,有时一个长数据包在导出时包含“E” . 现在我正在尝试将相同的文件导入SAS,以查看我的proc import-routine是否有效 .
当我导入文件时,所有数据都会通过,但是当我实际导出20列时,会被压缩成两列(因此我的分隔符错误了吗?) .
并非所有列都用引号括起来,只是其中的几个 . 数据示例:
CustomerID CustomerName Product Price BillingNR
"01234" Customer 1 Product1 Price1 "03541"
"52465" Customer 2 Product2 Price2 ""
"23454" Customer 3 Product3 Price3 "035411236952154589632154"
然后将CustomerID和BillingNR括在引号中 .
如果只有一些列用引号括起来而其他列不是,则如何导入此数据集? Or simply remove all double quotes from the when importing? 继承我的代码:
%macro import;
%if &exist= "Yes" %then %do;
proc import
datafile= "\\mypath\data.csv"
DBMS=CSV
out=Sales
replace;
getnames=YES;
run;
%end;
%else %do;
%put Nothing happens;
%end;
%mend;
%lesInn;
IF / ELSE测试只是另一个宏,我测试指定的文件是否存在 . 我试图研究不同的方法,我仍在寻找类似的问题,但似乎没有任何工作 .
所有答案都非常感谢 .
托尔
2 回答
如果您使用DSD选项读取文件,则SAS将自动从值周围删除引号 . 即使是大多数示例数据都不需要引用值的引号也是如此 .
将导致如下值:
CSV - >逗号分隔值我没有看到逗号被用作分隔符,而是管道 .
指定您的分隔符是管道,并将GUESSINGROWS选项增加到一个大数字,以便它分配正确的长度和类型 .
我仍然不确定Proc Import是否有效 . 如果不是,则需要编写数据步骤代码并确保指定将处理引号的DSD选项 .
编辑:基于问题编辑,最准确的方法是通过数据步骤读取 . 如上所述,DSD选项将处理报价 .