source('RW-PCAxis.R')
library('abind')


##--·--·--·--·--·--·--·--·--·--·--·--·--·--·--·--·--·--
### bajar defunciones 2c por pronvincias del INE
##  , leer,unir en un solo objeto 
##--·--·--·--·--·--·--·--·--·--·--·--·--·--·--·--·--·--

dir.create('./datos')

# 0.-dercarga los ficheros 'px' de defunciones por provincias
#    de ine (provincia,sexo,edad,generacion y estado civil)
#    uno por año. Serie de 1998 a 2007

serie<-1998:2007
for (i in pad(serie,4)){
  fdef<-paste('http://www.ine.es/pcaxisdl//t20/e301/defun/a',
              i,
              '/l0/20006.px',sep='')
  while (
     class(try(download.file(fdef,
                    paste('datos/defp',i,'.px',sep=''))))[1]=="try-error"
        ) print ("***")
}


# 1.- leer fichero pcaxis y agregar en un hiper-cubo
paste('datos/defp',serie,'.px',sep='')->fpx
i<-fpx[1]
px.read(i,
        encoding='latin1')->kk  ; kk$DATA->kk
dimnames(kk)[[4]]<-attr(kk,'dimcodes')[[4]]
dimnames(kk)->dn
c(list(periodo=as.character(serie[1])),dn)->dn
dim(kk)<-c(1,dim(kk))
dimnames(kk)<-dn
kkk<-kk
for (i in 2:length(fpx))
  {
    px.read( fpx[i],
            encoding='latin1')->kk
    kk$DATA->kk
    dimnames(kk)[[4]]<-attr(kk,'dimcodes')[[4]]
    dimnames(kk)->dn
    c(list(periodo=as.character(serie[i])),dn)->dn
    dim(kk)<-c(1,dim(kk))
    dimnames(kk)<-dn
    abind(kkk,kk,along=1) -> kkk ; 
  }
str(kkk)

## kk[1,1,,1:4]  # ok con NA Â¿Suprimir ?
## kkk[1,1,1,,1:4]  # parece que bien 


depr<-abind(kkk[,2:3,1,seq(2,203,by=2),-53],
          kkk[,2:3,1,seq(3,203,by=2),-53],along=-1) #Selecciona info.
dimnames(depr)[1]<-list(triangulo=c('L','U'))
dimnames(depr)[[4]]<-pad(0:100,3)
names(dimnames(depr))<-c('triangulo','periodo','sexo','edadc','provincia')
aperm(depr,c(4,2,1,3,5))->depr
dimnames(depr)[[5]]<-pad(tpca$cPro,2)
str(depr)
depr[is.na(depr)]<-0 # rellena a cero los NA 
str(depr)


# 2.- agregar las provicias en ccaa
read.csv2('datos/ccaa.csv', encoding='latin1')->tpca
tpca[-1,]->tpca
tpca[order(tpca$cPro),]->tpca
str(tpca)  #Tabla provincias & CCAA
deca<- apply(depr,1:4,
          function(e){tapply(e,pad(tpca$cCA,2),sum)})
aperm(deca,c(2:5,1))->deca
str(deca)

# 3.- agregar el total nacional
apply(deca,1:4,sum)->dena ;
dim(dena)<-c(dim(dena),1)

# 4.- Contruye objeto con  Total nacional, AndalucÃ­a y 8 provincias
str(depr) ; str(deca) ; str(dena) 

abind(depr[,,,,c('04','11','14','18','21','23','29','41')],
      deca[,,,,c('54'), drop=F ],
      dena,along=5)-> def
names(dimnames(def))<-c('edadc','periodo','triangulo','sexo','lugar')
dimnames(def)$lugar[10]<-'99'

def[is.na(def)]<-0
str(def) # Defunciones 2005 y 2006 doble clasificacion,
         # provincias de andalucía, andalucía y españa y sexo
# num [1:101, 1:2, 1:2, 1:2, 1:10] 18 3 2 NA 2 NA NA NA NA NA ...
# - attr(*, "dimnames")=List of 5
#  ..$ edadc    : chr [1:101] "000" "001" "002" "003" ...
#  ..$ periodo  : chr [1:2] "2005" "2006"
#  ..$ triangulo: chr [1:2] "L" "U"
#  ..$ sexo     : chr [1:2] "Varones" "Mujeres"
#  ..$ provincia: chr [1:10] "04" "11" "14" "18" ...




# Comprueba ----
apply(def,c(5,2),sum)


# tabla por edades
matplot(0:100,
apply(def[,'2005',,,1:9],c(1,4),sum) # mal
 ,type='s')



matplot(0:100,
        apply(pob[,'2005/01/01',,],c(1,3),sum)
        ,type='s')



apply(pob[,'2005/01/01',,],c(3,2),sum)
#  1-1-2005
#         Ambos     Varones  Mujeres
#Almeria  590.028   300.546  289.482
#Cadiz  1.154.167   571.632  582.535
#Cordoba  773.790   379.156  394.634
#Granada  857.036   420.870  436.166
#Huelva   475.601   235.786  239.815
#Jaén     650.253   321.380  328.873
#Málaga 1.395.867   685.795  710.072
#Sevilla 1.773.623   870.077  903.546

