Trucos SAS. Identificar registros duplicados

Muy rápido, para identificar registros duplicados existen múltiples formas. Seguramente haré un monográfico sobre este tema pero de momento dejo una píldora: data aleatorio; do i=1 to 100000; id=ranpoi(23456,56781); if ranuni(5)>=0.3 then output; end; run; proc sql; create table repes (where=(rep>1)) as select id, count(id) as rep from aleatorio group by 1; quit; ```sas proc sql; create table repes (where=(rep=1)) as select id, count(id) as rep from aleatorio group by 1; quit; Contamos registros y empleamos where como opción de escritura. Muy fácil y perfectamente entendible. No puedo entretenerme más que mi hija me reclama…

29 de octubre de 2009 · rvaquerizo

Trucos SAS. Muestreo con PROC SURVEYSELECT

Hace varios días planteamos algún truco SAS para la realización de muestras aleatorias. Hoy planteo otro truco para lo mismo pero empleando el procedimiento de SAS SURVEYSELECT. Este procedimiento lo tenemos en el módulo STAT y tiene una sintaxis muy sencilla. Además nos permite realizar muestreos estratificados de forma muy sencilla, mediante pasos data el muestreo estratificado se complica. Como es habitual vemos varios ejemplos partiendo de una tabla SAS aleatoria: ...

15 de junio de 2009 · rvaquerizo

Trucos SAS. Informes de valores missing

A continuación os planteo como truco SAS una duda que nos mandaba LILIANA. Ella necesitaba estudiar los valores perdidos de las tablas de una librería determinada. En este caso vamos a estudiar los missing de las variables numéricas de una librería, de forma análoga se puede hacer con las alfanuméricas. Como siempre vamos a trabajar con un ejemplo que parte de tablas generadas aleatoriamente. Comenzamos generando estas tablas: libname datos "c:\temp\datos"; %macro aleatorios; %do i=1 %to 5; data datos.proyecto_&i.; do id=1 to 200; if int(ranuni(0)*10) = 2 then importe1=.; else importe1=round(rand("uniform")*1000,.1); if int(ranuni(0)*10) > 0.3 then importe2=.; else importe2=round(rand("uniform")*130,.1); length zona $15.; if ranuni(0) <=.32 then zona="España"; else if ranuni(1) <= 0.32 then zona="Cataluña"; else zona="Resto"; output; end; run; %end; %mend aleatorios; %aleatorios; ...

16 de marzo de 2009 · rvaquerizo