Automatizar Código

Truco R. Eval, parse y paste para automatizar código

La función paste nos permite concatenar cadenas de texto con R:

paste("Dato",rep(1:10),sep="")

Parse recoge una expresión pero no la evalúa:

parse(text="sqrt(121)")

Y por último eval evalúa una expresión:

eval(parse(text="sqrt(121)"))

Interesantes funciones que nos pueden permitir automatizar códigos recursivos o códigos guardados como objetos en R. Imaginemos el siguiente ejemplo de R:

ejemplo1 <- data.frame(replicate (20,rpois(20,10)))

nom <- paste("dato",1:20,sep="")

names(ejemplo1) <- nom

summary(ejemplo1)

Hemos automatizado los 20 nombres de un data frame con datos aleatorios con una distribución de poissón de media 10 creado con la función replicate. Ahora imaginemos que deseamos transformar en factor sólo aquellos elementos del data frame con un sufijo par (datos2, datos4, …). Podemos crear una función o podemos crear ejecuciones de código R del siguiente modo:

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”;