format - lengthn - scan sas ejemplo
CSV SAS AL CARÁCTER PRINCIPALES ceros (2)
Cuando está importando un CSV, definitivamente quiere usar los delimitadores para su ventaja. Me parece poco probable que desee utilizar declaraciones de entrada basadas en columnas, por ejemplo, Field1 $ 1-10
. ¿Has probado algo tan simple como:
data pharmacy;
infile "//path/June 2013/test.csv" dsd;
input Field1 $ Field2 $;
RUN;
Personalmente, casi siempre tomo la salida más fácil y solo uso proc import
.
En SAS 9.3 necesito importar un archivo CSV con mi primera columna con ceros a la izquierda. He reserached y simplemente no puedo entender cómo formatear la declaración. Hice esto y lo eché a perder: sé que hay un formato z que puede funcionar, pero no estoy seguro de cómo incorporarlo.
data pharmacy;
infile "//path/June 2013/test.csv"
dsd missover
/*lrecl=512 pad*/
;
input
Field1 $ 1-10
/* Field2 $*/
;
RUN;
Suponiendo que sus datos están en el siguiente formato:
Field1, Field2
00001,1.2
00002,4.5
00010,189.2
00280546,0
0145605616,6
Estuviste en la línea correcta con respecto al formato Z.
Si desea mantener el Campo1 como numérico, simplemente léalo como numérico: SAS ignorará los ceros a la izquierda. Pero puedes usar z10. como el formato para Field1. Entonces, cuando se crea el conjunto de datos, se mostrará con ceros a la izquierda. Alternativamente, si desea almacenar el Campo1 como variable de caracteres, entonces también es fácil: simplemente lea Campo1 como numérico y vuelva a formatear usando put (Campo1, 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;
devoluciones:
Field1 Field2 Field1_char
0000000001 1.2 0000000001
0000000002 4.5 0000000002
0000000010 189.2 0000000010
0000280546 0 0000280546
0145605616 6 0145605616