Skip to content

Instantly share code, notes, and snippets.

@viciana
Last active February 20, 2017 15:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save viciana/e1c94c8080a02c4a8a847f4f124ba9ae to your computer and use it in GitHub Desktop.
Save viciana/e1c94c8080a02c4a8a847f4f124ba9ae to your computer and use it in GitHub Desktop.
Lectura de cubo OLAP 226 de la publicacion: Estadísticas Longitudinales de Supervivencia y Longevidad en Andalucía
# Descarga y preparación de los datos del cubo OLAP en formato pcAxis,
# cuyo enlace se encuentra en la parte inferior izquierda de las paginas
# de tabulaciones de: "Estadísticas Longitudinales de Supervivencia y Longevidad en Andalucía"
# http://www.juntadeandalucia.es/institutodeestadisticaycartografia/consultasActividad.jsp?CodOper=660&sub=50517
# install.packages('pxR')
require(pxR) # activar paquete de lectura de ficheros px-Axis
if (! dir.exists('datos') ) dir.create('datos')
download.file('http://www.juntadeandalucia.es/institutodeestadisticaycartografia/longevidad/pcaxis/consulta226.zip', destfile = 'datos/consulta226.zip')
unzip('datos/consulta226.zip', list = T) # Lista nombre de fichero
## La nomeclatura de los nombre de fichero es "D" para defunciones "P" para
## pesonas-tiempo. 1: Hombres, 6: Mujeres y 9: ambos sexos
## -----
## Extrae datos de Hombres y Mujeres (no los totales)
unzip('datos/consulta226.zip', exdir = './datos/',
files = c("CUBO5_D1.px","CUBO5_D6.px",
"CUBO5_P1.px","CUBO5_P6.px"))
read.px('datos/CUBO5_D1.px')-> D1
read.px('datos/CUBO5_P1.px')-> P1
read.px('datos/CUBO5_D6.px')-> D6
read.px('datos/CUBO5_P6.px')-> P6
## Alguna metainformacion del objeto:
D1$DESCRIPTION
D1$UNITS # [1] "número de fallecidos"
P1$UNITS # [1] "Personas-año de exposición a riesgo"
names(D1$DATA$value) # variable del objeto:
# "PMDS" "EDAD" "NACIONALIDAD" "ESTUDIOS" "TENEN" "value"
##-----------------------------------------------------------------
## EDICION DE DATOS:
##-----------------------------------------------------------------
require(data.table) ## Por rapidez
as.data.table(as.data.frame(D1))-> D1
as.data.table(as.data.frame(D6))-> D6
as.data.table(as.data.frame(P1))-> P1
as.data.table(as.data.frame(P6))-> P6
## Etiquetamos cada sexo y unimos eventos y personas-año en una sola tabla
D1$SEXO <- P1$SEXO <- 'Hombres'
D6$SEXO <- P6$SEXO <- 'Mujeres'
D16 <- rbind(D1,D6)
P16 <- rbind(P1,P6)
setnames(D16,'value', 'Defunciones') # Defunciones
setnames(P16,'value', 'PYear') # Personas-año
##
rm(D1,D6,P1,P6) # libera memoria
comunes <- intersect(names(D16), names(P16))
dpy <- merge(D16,P16, by= comunes)
dpy$SEXO <- factor(dpy$SEXO) ## Factoriza categoria sexo
rm(D16,P16,comunes) # libera memoria
str(dpy)
## PMDS : Corresponde a los códigos de seccion que se construyen con:
## 2 digistos de código provincial, 3 de código Municipal, 2 de distrito y 3 de sección
## EDAD : Grupo quinquenal de edad a lo largo del periodo de seguimiento (variable tiempo-variable)
## TENEN : variable "propiedad de vivienda de residencia" en el censo de 2001
## PYear : Personas-año de exposición a riesgo en cada categoría
##
## Las demas variables son auto-explicativas
save(dpy,file='dpy.RData')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment