在 SAS 9.3 中,我需要导入一个 CSV 文件,其中我的第一列有前导零。我已经重新搜索,只是无法弄清楚如何格式化声明。我已经完成了这个并且搞砸了 - 我知道有 az 格式可能有效但不确定如何合并?
data pharmacy;
infile "\\path\June 2013\test.csv"
dsd missover
/*lrecl=512 pad*/
;
input
Field1 $ 1-10
/* Field2 $*/
;
RUN;
假设您的数据采用以下格式:
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
导入 CSV 时,您肯定希望使用分隔符来发挥自己的优势。我发现您不太可能想要使用基于列的输入语句,例如Field1 $ 1-10
. 您是否尝试过以下简单的方法:
data pharmacy;
infile "\\path\June 2013\test.csv" dsd;
input Field1 $ Field2 $;
RUN;
就个人而言,我几乎总是采取简单的方法,只使用proc import
.