Truco SAS. Gráfico de correlaciones

Un truco SAS interesante para representar matrices de correlaciones. El ejemplo es muy sencillo, pero previamente tenéis que crear el conjunto de datos SAS para ilustrar el ejemplo. Así que lo primero que hay que hacer es ir a este enlace y copiar el código necesario para crear el conjunto de datos SAS auto. Una vez tenemos ese conjunto de datos de 74 observaciones y 12 variables, sólo tenemos que emplear el PROC CORR con una sintaxis muy sencilla: ...

12 de mayo de 2014 · rvaquerizo

Truco Excel. Pasar de número con formato AAAAMMDD a fecha con fórmulas

Tenía que transformar un número en formato AAAAMMDD a una fecha en Excel. Tenía que concatenar varias funciones y he pensado que a lo mejor a alguno de los lectores del blog podría interesarle. Se trata de utilizar la función de Excel FECHA con RESIDUO y ENTERO pero con cierto talento. Partimos de una fecha (en la celda C6) 20140225 y aplicamos la siguiente sucesión de fórmulas: Año: =ENTERO(C6/10000) Mes: =RESIDUO(ENTERO(C6/100);100) Día: =RESIDUO(C6;100) Todo junto en una fórmula: =FECHA(ENTERO(C6/10000);RESIDUO(ENTERO(C6/100);100);RESIDUO(C6;100)) Ahí tenéis un truco interesante por si os encontráis en la misma situación que yo. Saludos.

25 de febrero de 2014 · rvaquerizo

Espacios en SAS

Las funciones SAS más habituales para eliminar blancos son las que tenéis en la figura de arriba. Para llegar a ese conjunto de datos SAS, hemos ejecutado el siguiente paso DATA: data ejemplo; st = " Cuando brilla el sol "; l_st = length(st); output; funcion = "COMPRESS"; st1 = compress(st); l_st1 = length(st1); output; funcion = "COMPBL"; st1 = compbl(st); l_st1 = length(st1); output; funcion = "TRIM"; st1 = trim(st); l_st1 = length(st1); output; funcion = "TRIMN"; st1 = trimn(st); l_st1 = length(st1); output; funcion = "STRIP"; st1 = strip(st); l_st1 = length(st1); output; funcion = "STRIP+COMPBL"; st1 = strip(compbl(st)); l_st1 = length(st1); output; run; Distintas formas de eliminar espacios dentro de una cadena de caracteres en SAS. Partimos de la variable string « Cuando brilla el sol » y empleamos las siguientes funciones: ...

14 de enero de 2014 · rvaquerizo

Análisis del discurso de navidad del Rey de España 2013

Me llena de orgullo y satisfacción mostraros un ejemplo de uso de la librería wordcloud para la realización de nubes de palabras con R. Esta entrada no es muy innovadora, porque ya tenemos alguna similar en el blog. Lo primero que tenéis que hacer es descargaros el discurso del Rey y ejecutad este código: # Lectura del archivo ubicacion <- "C:\\temp\\juancar.txt" texto_df <- read.table(ubicacion, sep = "\r") # Dejamos todas las palabras en mayúsculas texto <- toupper(texto_df$V1) # El texto lo transformamos en una lista separada por espacios texto_split <- strsplit(texto, split = " ") # Deshacemos esa lista y tenemos el data.frame texto_col <- as.character(unlist(texto_split)) texto_col_df <- data.frame(V1 = texto_col) # Eliminamos algunos caracteres regulares texto_col_df$V1 <- gsub("([[:space:]])", "", texto_col_df$V1) texto_col_df$V1 <- gsub("([[:digit:]])", "", texto_col_df$V1) texto_col_df$V1 <- gsub("([[:punct:]])", "", texto_col_df$V1) # Creamos una variable longitud de la palabra texto_col_df$largo <- nchar(texto_col_df$V1) # Quitamos palabras cortas texto_col_df <- subset(texto_col_df, largo > 4) # Nube de palabras # install.packages('wordcloud') library(wordcloud) library(RColorBrewer) pesos <- data.frame(table(texto_col_df$V1)) # Paleta de colores pal <- brewer.pal(6, "RdYlGn") # Realizamos el gráfico png('C:\\temp\\Discurso del rey españa 2013.png', width = 500, height = 500) wordcloud(pesos$Var1, pesos$Freq, scale = c(4, .2), min.freq = 2, max.words = Inf, random.order = FALSE, colors = pal, rot.per = .15) dev.off() Interesante el uso de la librería RColorBrewer. Particularmente me gusta mucho el resultado que nos da wordcloud para la realización de las nubes de palabras con una sintaxis sencilla. Considero imprescindible el uso de random.order = FALSE. Espero que os sea de utilidad. ...

26 de diciembre de 2013 · rvaquerizo

Truco (malo) de R. Leer datos desde Excel

Tenemos unos datos en Excel y deseamos crear un objeto en R con ellos. La forma más sencilla es seleccionar y copiar los datos y ejecutar el siguiente código: datos <- read.delim("clipboard") str(datos) Muy sencillo, pero necesitaba “fustigarme”. Si deseamos llevar los datos de R a Excel (el camino contrario), hacemos: write.table(datos, "clipboard", sep = "\t", row.names = FALSE) Igual de sencillo. No hagáis como yo, no olvidéis este código. Saludos.

3 de diciembre de 2013 · rvaquerizo

Truco Excel. Identificar el color de una celda

Para identificar el color de una celda en Excel, podemos emplear Interior.Color del siguiente modo: Sub Macro1() Dim i As Long Dim dato As Long For i = 3 To 6 dato = Cells(i, 2).Interior.Color Cells(i, 3).Value = dato Next i End Sub No funciona con formatos condicionales; si deseáis utilizar los colores de los formatos condicionales, habréis de idear cómo hacerlo o bien esperar a que tenga tiempo a redactar cómo lo hago yo; pero que nadie se espere un programa en Visual Basic brillante, que no fui capaz de hacerlo. Saludos.

27 de noviembre de 2013 · rvaquerizo

Truco Excel. Agrupar valores en un campo de una tabla dinámica

Si necesitamos agrupar un campo de una tabla dinámica, tenemos dos opciones: por un lado, agrupar manualmente o bien crear intervalos de determinado tamaño. Para agrupar datos manualmente, seleccionamos los elementos que deseamos agrupar en la tabla dinámica y pulsamos botón derecho > Agrupar: Inmediatamente se nos crea un nuevo campo en la tabla dinámica que, por sufijo, tendrá un “2” y aparece un nuevo grupo que por defecto se llamará “Grupo 1”. Podemos cambiar el nombre; en este caso agrupamos trimestres o cuatrimestres: ...

5 de noviembre de 2013 · rvaquerizo

Truco (muy fácil) de SAS. Leer un rango de una hoja Excel

Cuando tenemos rangos en nuestras hojas Excel y deseamos que se conviertan en tabla SAS, podemos emplear la sentencia LIBNAME de este modo: libname selec "C:\TEMP\rangos.xlsx"; data rango; set selec.rango; run; libname selec clear; Asignamos la librería al archivo Excel que deseamos leer y tan simple como referenciar al rango en nuestro paso data. Se interactúa fácil entre Excel y SAS. Saludos.

10 de octubre de 2013 · rvaquerizo

Truco SAS. Retrasar una ejecución con SLEEP

El método más sencillo para ejecutar SAS a una hora determinada es el empleo de la función SLEEP: data _null_; momento = "03OCT2013:10:07"dt; duerme_hasta = sleep(momento - datetime(), 1); run; Un truco muy sencillo que da respuesta a una duda planteada en el blog. Pensé que ya existía esta entrada. Saludos.

3 de octubre de 2013 · rvaquerizo

Truco SAS. Eliminar retornos de carro o saltos de línea engorrosos

Cuando tenemos saltos de línea o retornos de carro que nos dificultan las lecturas de ficheros de texto, podemos leer carácter a carácter con SAS y eliminar esos caracteres incómodos. data _null_; length char $1.; infile 'C:\fichero_de_entrada.TXT' lrecl=1 recfm=F missover dsd; file 'C:\fichero_de_entrada_depurado.TXT' lrecl=1 recfm=F; input char $char1.; if rank(char) = 13 /* SI ES WINDOWS PONER EL 13 */ then char = " "; put char $char1.; run; Recomiendo no sobrescribir el fichero de texto y crear otro “depurado”. Tendréis este problema cuando vuestro programa SAS os lea menos observaciones de las esperadas. Esto suele pasar cuando trabajamos con archivos de distintos sistemas operativos; como por ejemplo cuando leemos un archivo de texto Unix con una máquina Windows. Saludos.

30 de septiembre de 2013 · rvaquerizo