sas duplicate-removal

Eliminar columnas idénticas en SAS



duplicate-removal (1)

Estoy trabajando con un conjunto de datos muy grande que contiene las mismas columnas varias veces, pero con diferentes nombres de columna (tanto caracteres como numéricos). ¿Alguien sabe cómo encontrar y eliminar estas columnas idénticas?

Ejemplo

A B C D E F G 12 ab 12 ab 8 h 12 14 cd 14 cd 65 j 14 6 fs 6 fs 3 g 6 . . . . 4 q . 3 d 3 d 5 d 3

AG son nombres variables, y quiero poder ver que A , C y G son idénticos y luego eliminar todos excepto uno. También B y D son idénticos. Quiero tener solo uno.

¿Esto es posible?


Aquí hay un ejemplo utilizando la técnica propuesta por Shenglin Chen en los comentarios.

data have ; input A B $ C D $ E F $ G ; cards; 12 ab 12 ab 8 h 12 14 cd 14 cd 65 j 14 6 fs 6 fs 3 g 6 . . . . 4 q . 3 d 3 d 5 d 3 ;;;;

Encuentra las columnas numéricas únicas.

proc transpose data=have out=tall_numbers ; var _numeric_; run; proc sort data=tall_numbers nodupkey out=keep_numbers(keep=_name_); by col: ; run;

Encuentra las columnas de personajes únicos.

proc transpose data=have out=tall_characters ; var _character_; run; proc sort data=tall_characters nodupkey out=keep_characters(keep=_name_); by col: ; run;

Obtenga la lista combinada de columnas.

proc sql noprint ; select _name_ into :keep_list separated by '' '' from (select _name_ from keep_characters union select _name_ from keep_numbers) order by 1 ; quit;

Crea una nueva tabla con solo las columnas únicas.

data want ; set have ; keep &keep_list ; run;