【发布时间】:2016-09-15 12:57:45
【问题描述】:
我有一个特殊的问题。我导出了一个 csv 文件,由于前导零,我在某些列上需要将数据放在引号中,有时长数据编号在导出时会在其中包含“E”。现在我正在尝试将相同的文件导入 SAS 以查看我的 proc 导入例程是否有效。
当我导入文件时,所有数据都通过了,但在我实际导出 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 然后用引号括起来。
当只有一些列用引号括起来而其他列没有时,如何导入此数据集? 或者只是在导入时删除所有双引号?这是我的代码:
%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-test 只是我测试指定文件是否存在的另一个宏。我曾尝试研究不同的方法,并且仍在寻找类似的问题,但似乎没有任何效果。
非常感谢所有答案。
图尔
【问题讨论】:
-
你的例子中的 csv 真的像吗?然后你必须添加
delimiter='|';。还是这只是一个抽象样本? -
抱歉只是抽象的例子。从示例中删除了管道
-
问题是什么?您是在问 PROC IMPORT 是否足够聪明,可以确定哪些列是数字的,哪些是字符的?
标签: csv import sas proc quotation-marks