在SAS 9.3中,我需要导入一个CSV文件,我的第一列有前导零。我已经研究过,并且无法弄清楚如何格式化语句。我已经这样做了并且搞砸了 - 我知道有一种z格式可以工作但不确定如何合并?
data pharmacy;
infile "\\path\June 2013\test.csv"
dsd missover
/*lrecl=512 pad*/
;
input
Field1 $ 1-10
/* Field2 $*/
;
RUN;
答案 0 :(得分:4)
假设您的数据采用以下格式:
Field1, Field2
00001,1.2
00002,4.5
00010,189.2
00280546,0
0145605616,6
关于Z.格式你是正确的。
如果你想将Field1保持为数字,那么只需将其读作数字 - SAS将忽略前导零。但你可以使用z10。作为Field1的格式。因此,在创建数据集时 - 它将显示前导零。或者,如果你想将Field1存储为字符变量,那么这也很容易 - 只需将Field1作为数字读取,然后使用put(Field1,z10。)重新格式化。
DATA WORK.dummyImport;
INFILE '/<path>/dummyImport.csv' MISSOVER DSD FIRSTOBS=2 TERMSTR=CRLF; ;
INPUT
Field1
Field2 ;
FORMAT FIELD1 Z10.;
Field1_char=put(Field1, z10.);
RUN;
PROC PRINT DATA=WORK.DummyImport; RUN;
返回:
Field1 Field2 Field1_char
0000000001 1.2 0000000001
0000000002 4.5 0000000002
0000000010 189.2 0000000010
0000280546 0 0000280546
0145605616 6 0145605616
答案 1 :(得分:0)
当您导入CSV时,您肯定希望使用分隔符。我发现你不太可能想要使用基于列的输入语句,例如Field1 $ 1-10
。你尝试过这么简单的事情:
data pharmacy;
infile "\\path\June 2013\test.csv" dsd;
input Field1 $ Field2 $;
RUN;
就个人而言,我几乎总是采取简单的方法,只使用proc import
。