software military inglaterra estadistica check andalucia airline sas

military - Cómo combinar varios archivos csv en un único conjunto de datos con SAS



sas software (2)

Simplemente use un comodín en la instrucción de infile para leer en todos los archivos, y la opción filename= para almacenar el archivo actual en una variable temporal _f , almacenándolo en f .

Luego manipule f y var consecuencia.

data big ; length _f f $256. ; infile "*.csv" truncover filename=_f dlm='','' ; f = _f ; input var panellistID ; run ;

Tengo ~ 2300 archivos CSV y el nombre de la columna colunm 1 es diferente para cada archivo CSV. Quiero fusionar todos los archivos por panelistID (colunm 2) y ejecutar frecuencias en la columna 1 para obtener la frecuencia de cada archivo CSV. Por favor alguien puede ayudar?

A continuación, ejemplo de diseño de archivos:

File1 mat1_pen1, panelistID 0, 10075001 20, 10086001 44, 10086002 10, 10096001 File2 mat2_pen2, panelistID 74, 10118002 40, 10118003 77, 10128001 77, 10128003 file 3 mat3_pen4, panelistID 77, 10128003 51, 10137001 0, 10148001 0, 10148002 0, 10157001


filename mycsv "*.csv"; data mydataset(drop=tmp); infile mycsv dsd dlm='','' eov=eov; retain mat_pen_id; if _n_ = 1 or eov then do; *when using wildcard-concatenated input files, ; input mat_pen_id $20. tmp $20.; *eov is true for first line of second file.; eov = 0; else do; * _n_ =1 is true for first line of first file only; input mat_pen panelistID; end; run; proc sort data= mydataset; by panelistID; run; proc transpose data=mydataset out=wide_data; by panelistID; id mat_pen_id; var mat_pen; run; proc print data=wide_data; run;

Esto le dará un conjunto de datos llamado wide_data como:

obs panelistID mat1_pen1 mat2_pen2 mat3_pen3 etc 1 10075001 0 22 33