###############################################################
#  dplyr tem 5 commandos básicos para manipular data.frames
#
#  filter -- selecionar observações (linhas do data.frame)
#  select -- selecionar variáveis (colunas do data.frame)
#  mutate -- criar novas variáveis no data.frame
#  arrange -- ordenar observações
#  group_by + summarize -- criar novas variáveis que sintetizam as atuais  
#
#  E com o pipe (%>%) pode-se fazer uma cadeia de comandos
###############################################################

library(dplyr)
## 
## Attaching package: 'dplyr'
## 
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## 
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# data.frame D vai conter dados de fecund. para os 5564 municip. no censo de 2010
url = 'http://ufrn.schmert.net/dados/munic2010.csv'
D   = read.csv(url, stringsAsFactors = FALSE)
head(D)
##   X      id                 munic sigla   reg              meso
## 1 1 1100015 Alta Floresta D'Oeste    RO Norte Leste Rondoniense
## 2 2 1100023             Ariquemes    RO Norte Leste Rondoniense
## 3 3 1100031                Cabixi    RO Norte Leste Rondoniense
## 4 4 1100049                Cacoal    RO Norte Leste Rondoniense
## 5 5 1100056            Cerejeiras    RO Norte Leste Rondoniense
## 6 6 1100064     Colorado do Oeste    RO Norte Leste Rondoniense
##               micro Mu15 Mu20 Mu25 Mu30 Mu35 Mu40 Mu45 Cr15 Cr20 Cr25 Cr30
## 1            Cacoal  135  113  106   94   95   82   74    6    8   16    3
## 2         Ariquemes  500  472  439  402  363  325  254   42   59   44   18
## 3 Colorado do Oeste   31   23   28   23   22   23   21    3    5    3    2
## 4            Cacoal  425  412  365  354  321  295  248   21   50   41   14
## 5 Colorado do Oeste   93   83   75   70   69   66   57    3   10    5    5
## 6 Colorado do Oeste   97   87   86   75   74   63   60    8    4   10    5
##   Cr35 Cr40 Cr45
## 1    3    0    0
## 2   11    2    0
## 3    0    0    0
## 4    6    1    0
## 5    1    1    0
## 6    3    1    0
##########
# filter #
##########

# só observações da mesoregião Norte Fluminense
filter(D, meso == 'Norte Fluminense')
##      X      id                       munic sigla     reg             meso
## 1 3188 3300936                   Carapebus    RJ Sudeste Norte Fluminense
## 2 3190 3301009       Campos dos Goytacazes    RJ Sudeste Norte Fluminense
## 3 3192 3301157             Cardoso Moreira    RJ Sudeste Norte Fluminense
## 4 3195 3301405         Conceição de Macabu    RJ Sudeste Norte Fluminense
## 5 3210 3302403                       Macaé    RJ Sudeste Norte Fluminense
## 6 3235 3304151                    Quissamã    RJ Sudeste Norte Fluminense
## 7 3244 3304755 São Francisco de Itabapoana    RJ Sudeste Norte Fluminense
## 8 3245 3304805                 São Fidélis    RJ Sudeste Norte Fluminense
## 9 3247 3305000           São João da Barra    RJ Sudeste Norte Fluminense
##                   micro Mu15 Mu20 Mu25 Mu30 Mu35 Mu40 Mu45 Cr15 Cr20 Cr25
## 1                 Macaé   61   58   59   56   56   51   48    4    6    6
## 2 Campos dos Goytacazes 2169 2060 2079 1969 1748 1758 1747   91  160  169
## 3 Campos dos Goytacazes   52   54   46   50   50   45   47    1    3    3
## 4                 Macaé  103   90   83   85   79   85   77   16   10   10
## 5                 Macaé  941 1044 1142 1009  834  766  732   55   94   88
## 6                 Macaé  102   90   86   79   80   81   72    5    9    6
## 7 Campos dos Goytacazes  195  178  161  166  156  153  144    8   13   18
## 8 Campos dos Goytacazes  167  148  148  149  147  145  144    7   12   11
## 9 Campos dos Goytacazes  156  134  136  131  116  127  120   10   12    8
##   Cr30 Cr35 Cr40 Cr45
## 1    4    2    1    0
## 2  109   59   17    4
## 3    5    0    1    0
## 4    6    2    0    0
## 5   53   28   14    1
## 6    5    1    1    0
## 7    8    2    0    1
## 8    9    4    2    0
## 9    8    3    1    0
# só observações do RN e  microregião Serra de Santana
filter(D, sigla =='RN', micro == 'Serra de Santana') 
##      X      id                   munic sigla      reg             meso
## 1 1092 2401651                    Bodó    RN Nordeste Central Potiguar
## 2 1104 2402709              Cerro Corá    RN Nordeste Central Potiguar
## 3 1117 2403806                Florânia    RN Nordeste Central Potiguar
## 4 1146 2406502              Lagoa Nova    RN Nordeste Central Potiguar
## 5 1198 2411403        Santana do Matos    RN Nordeste Central Potiguar
## 6 1216 2413003             São Vicente    RN Nordeste Central Potiguar
## 7 1230 2414159 Tenente Laurentino Cruz    RN Nordeste Central Potiguar
##              micro Mu15 Mu20 Mu25 Mu30 Mu35 Mu40 Mu45 Cr15 Cr20 Cr25 Cr30
## 1 Serra de Santana   12   12   10    9   10    7    6    1    3    0    1
## 2 Serra de Santana   53   56   44   37   37   35   30    2    8    5    2
## 3 Serra de Santana   47   38   37   34   33   31   30    1    2    2    2
## 4 Serra de Santana   80   78   56   51   47   45   40    4    8    4    3
## 5 Serra de Santana   68   68   55   52   49   50   45    6    6    6    1
## 6 Serra de Santana   27   29   28   22   22   22   24    0    2    1    1
## 7 Serra de Santana   26   28   27   22   20   14   13    1    1    2    2
##   Cr35 Cr40 Cr45
## 1    0    0    0
## 2    2    0    0
## 3    1    0    0
## 4    1    1    0
## 5    1    0    0
## 6    1    1    0
## 7    1    0    0
# só observações da microregião que contém Sem-Peixe MG 
#     e com com mais de que 50 mulheres 20-24 
indice = which(D$munic == 'Sem-Peixe' & D$sigla == 'MG' )

filter(D, micro == micro[indice], Mu20 > 50)
##      X      id       munic sigla     reg         meso      micro Mu15 Mu20
## 1 2850 3152105  Ponte Nova    MG Sudeste Zona da Mata Ponte Nova  262  248
## 2 2871 3154002 Raul Soares    MG Sudeste Zona da Mata Ponte Nova  102   94
## 3 2882 3154903   Rio Casca    MG Sudeste Zona da Mata Ponte Nova   68   60
##   Mu25 Mu30 Mu35 Mu40 Mu45 Cr15 Cr20 Cr25 Cr30 Cr35 Cr40 Cr45
## 1  252  245  220  231  227   11   25   16   14    5    2    0
## 2   89   81   90   86   86    2    6    8    3    4    0    1
## 3   58   59   47   49   49    4    4    3    4    0    0    0
##########
# select #
##########

# só as colunas munic, sigla, Mu20, e Cr20
tmp = select(D, munic, sigla, Mu20, Cr20)
head(tmp)
##                   munic sigla Mu20 Cr20
## 1 Alta Floresta D'Oeste    RO  113    8
## 2             Ariquemes    RO  472   59
## 3                Cabixi    RO   23    5
## 4                Cacoal    RO  412   50
## 5            Cerejeiras    RO   83   10
## 6     Colorado do Oeste    RO   87    4
# todas as colunas MENOS meso, micro, e CrXX
tmp = select(D,  -meso, -micro, -contains('Cr'))
head(tmp)
##   X      id                 munic sigla   reg Mu15 Mu20 Mu25 Mu30 Mu35
## 1 1 1100015 Alta Floresta D'Oeste    RO Norte  135  113  106   94   95
## 2 2 1100023             Ariquemes    RO Norte  500  472  439  402  363
## 3 3 1100031                Cabixi    RO Norte   31   23   28   23   22
## 4 4 1100049                Cacoal    RO Norte  425  412  365  354  321
## 5 5 1100056            Cerejeiras    RO Norte   93   83   75   70   69
## 6 6 1100064     Colorado do Oeste    RO Norte   97   87   86   75   74
##   Mu40 Mu45
## 1   82   74
## 2  325  254
## 3   23   21
## 4  295  248
## 5   66   57
## 6   63   60
##########
# mutate #
##########

# soma de Mulheres e Crianças recem-nascidas
tmp = mutate(D,  Mu = Mu15+Mu20+Mu25+Mu30+Mu35+Mu40+Mu45,
             Cr = Cr15+Cr20+Cr25+Cr30+Cr35+Cr40+Cr45,
             ZeroNasc = (Cr == 0))
head(tmp)
##   X      id                 munic sigla   reg              meso
## 1 1 1100015 Alta Floresta D'Oeste    RO Norte Leste Rondoniense
## 2 2 1100023             Ariquemes    RO Norte Leste Rondoniense
## 3 3 1100031                Cabixi    RO Norte Leste Rondoniense
## 4 4 1100049                Cacoal    RO Norte Leste Rondoniense
## 5 5 1100056            Cerejeiras    RO Norte Leste Rondoniense
## 6 6 1100064     Colorado do Oeste    RO Norte Leste Rondoniense
##               micro Mu15 Mu20 Mu25 Mu30 Mu35 Mu40 Mu45 Cr15 Cr20 Cr25 Cr30
## 1            Cacoal  135  113  106   94   95   82   74    6    8   16    3
## 2         Ariquemes  500  472  439  402  363  325  254   42   59   44   18
## 3 Colorado do Oeste   31   23   28   23   22   23   21    3    5    3    2
## 4            Cacoal  425  412  365  354  321  295  248   21   50   41   14
## 5 Colorado do Oeste   93   83   75   70   69   66   57    3   10    5    5
## 6 Colorado do Oeste   97   87   86   75   74   63   60    8    4   10    5
##   Cr35 Cr40 Cr45   Mu  Cr ZeroNasc
## 1    3    0    0  699  36    FALSE
## 2   11    2    0 2755 176    FALSE
## 3    0    0    0  171  13    FALSE
## 4    6    1    0 2420 133    FALSE
## 5    1    1    0  513  25    FALSE
## 6    3    1    0  542  31    FALSE
# quais municip. não tiveram nemhum nascimento registrado?
filter(tmp, ZeroNasc == TRUE)
##       X      id                      munic sigla          reg
## 1  2284 3103801                     Arapuá    MG      Sudeste
## 2  2446 3118502                 Consolação    MG      Sudeste
## 3  3003 3164803 São Sebastião do Rio Preto    MG      Sudeste
## 4  3017 3165800         Senador José Bento    MG      Sudeste
## 5  3304 3503356                  Arco-Íris    SP      Sudeste
## 6  3347 3507209                       Borá    SP      Sudeste
## 7  3445 3515657                     Fernão    SP      Sudeste
## 8  3677 3536570                Paulistânia    SP      Sudeste
## 9  3817 3549300     São João do Pau d'Alho    SP      Sudeste
## 10 3885 3555307                  Turmalina    SP      Sudeste
## 11 4136 4116307             Munhoz de Melo    PR          Sul
## 12 4234 4123600                 Santa Inês    PR          Sul
## 13 4507 4213153            Planalto Alegre    SC          Sul
## 14 4563 4217154    São Miguel da Boa Vista    SC          Sul
## 15 4767 4308052               Faxinalzinho    RS          Sul
## 16 4832 4311270      Lagoa dos Três Cantos    RS          Sul
## 17 4858 4312351                   Montauri    RS          Sul
## 18 4869 4312625                  Muliterno    RS          Sul
## 19 4903 4314035                Pareci Novo    RS          Sul
## 20 4935 4315172             Protásio Alves    RS          Sul
## 21 4979 4317756  Santo Antônio do Planalto    RS          Sul
## 22 5067 4322186             Tupanci do Sul    RS          Sul
## 23 5073 4322350             União da Serra    RS          Sul
## 24 5094 4323606      Vista Alegre do Prata    RS          Sul
## 25 5187 5101209                 Araguainha    MT Centro-Oeste
## 26 5285 5107297           São José do Povo    MT Centro-Oeste
## 27 5450 5212253                Lagoa Santa    GO Centro-Oeste
##                                meso                    micro Mu15 Mu20
## 1  Triângulo Mineiro/Alto Paranaíba           Patos de Minas   12    7
## 2             Sul/Sudoeste de Minas                  Itajubá    8    6
## 3   Metropolitana de Belo Horizonte Conceição do Mato Dentro    6    5
## 4             Sul/Sudoeste de Minas             Pouso Alegre    7    4
## 5                           Marília                     Tupã    8    8
## 6                             Assis                    Assis    3    2
## 7                           Marília                  Marília    5    7
## 8                             Bauru                    Bauru    7    6
## 9               Presidente Prudente                  Dracena    8    7
## 10            São José do Rio Preto            Fernandópolis   10    6
## 11         Norte Central Paranaense                  Astorga   19   13
## 12         Norte Central Paranaense                  Astorga    8    6
## 13                Oeste Catarinense                  Chapecó   12   10
## 14                Oeste Catarinense                  Chapecó    9    6
## 15           Noroeste Rio-grandense                  Erechim   13    8
## 16           Noroeste Rio-grandense             Não-Me-Toque    6    6
## 17           Nordeste Rio-grandense                  Guaporé    5    5
## 18           Noroeste Rio-grandense              Passo Fundo    9    8
## 19    Metropolitana de Porto Alegre               Montenegro   15   15
## 20           Nordeste Rio-grandense                  Guaporé    7    6
## 21           Noroeste Rio-grandense                Carazinho    7    8
## 22           Noroeste Rio-grandense                Sananduva    6    4
## 23           Nordeste Rio-grandense                  Guaporé    5    4
## 24           Nordeste Rio-grandense                  Guaporé    5    4
## 25           Sudeste Mato-grossense                  Tesouro    4    2
## 26           Sudeste Mato-grossense             Rondonópolis   15   12
## 27                       Sul Goiano             Quirinópolis    5    5
##    Mu25 Mu30 Mu35 Mu40 Mu45 Cr15 Cr20 Cr25 Cr30 Cr35 Cr40 Cr45  Mu Cr
## 1     9   10   13   12   10    0    0    0    0    0    0    0  73  0
## 2     5    6    5    6    6    0    0    0    0    0    0    0  42  0
## 3     5    6    7    6    6    0    0    0    0    0    0    0  41  0
## 4     5    7    7    7    7    0    0    0    0    0    0    0  44  0
## 5     8    7    6    8    6    0    0    0    0    0    0    0  51  0
## 6     4    4    2    3    4    0    0    0    0    0    0    0  22  0
## 7     6    5    6    6    5    0    0    0    0    0    0    0  40  0
## 8     7    7    7    7    5    0    0    0    0    0    0    0  46  0
## 9     7    7    8    8    7    0    0    0    0    0    0    0  52  0
## 10    5    5    8    8   10    0    0    0    0    0    0    0  52  0
## 11   12   11   15   15   15    0    0    0    0    0    0    0 100  0
## 12    6    7    7    8    8    0    0    0    0    0    0    0  50  0
## 13    9    7    9   10   12    0    0    0    0    0    0    0  69  0
## 14    5    5    6    6    9    0    0    0    0    0    0    0  46  0
## 15    8    8    9    9   10    0    0    0    0    0    0    0  65  0
## 16    6    5    5    6    7    0    0    0    0    0    0    0  41  0
## 17    4    3    6    5    6    0    0    0    0    0    0    0  34  0
## 18    7    4    6    6    8    0    0    0    0    0    0    0  48  0
## 19   13   13   12   13   15    0    0    0    0    0    0    0  96  0
## 20    5    6    6   10    7    0    0    0    0    0    0    0  47  0
## 21    7    7    6    9    9    0    0    0    0    0    0    0  53  0
## 22    3    4    6    7    7    0    0    0    0    0    0    0  37  0
## 23    3    2    4    5    5    0    0    0    0    0    0    0  28  0
## 24    4    5    4    6    6    0    0    0    0    0    0    0  34  0
## 25    4    5    5    6    3    0    0    0    0    0    0    0  29  0
## 26   11   12   14   12   12    0    0    0    0    0    0    0  88  0
## 27    5    6    4    5    6    0    0    0    0    0    0    0  36  0
##    ZeroNasc
## 1      TRUE
## 2      TRUE
## 3      TRUE
## 4      TRUE
## 5      TRUE
## 6      TRUE
## 7      TRUE
## 8      TRUE
## 9      TRUE
## 10     TRUE
## 11     TRUE
## 12     TRUE
## 13     TRUE
## 14     TRUE
## 15     TRUE
## 16     TRUE
## 17     TRUE
## 18     TRUE
## 19     TRUE
## 20     TRUE
## 21     TRUE
## 22     TRUE
## 23     TRUE
## 24     TRUE
## 25     TRUE
## 26     TRUE
## 27     TRUE
###########
# arrange #
###########

tmp = filter(D, meso == 'Norte Fluminense')
tmp = mutate(tmp,  Mu = Mu15+Mu20+Mu25+Mu30+Mu35+Mu40+Mu45,
             Cr = Cr15+Cr20+Cr25+Cr30+Cr35+Cr40+Cr45,
             ZeroNasc = (Cr == 0))

tmp = arrange(tmp, Cr)
tmp
##      X      id                       munic sigla     reg             meso
## 1 3192 3301157             Cardoso Moreira    RJ Sudeste Norte Fluminense
## 2 3188 3300936                   Carapebus    RJ Sudeste Norte Fluminense
## 3 3235 3304151                    Quissamã    RJ Sudeste Norte Fluminense
## 4 3247 3305000           São João da Barra    RJ Sudeste Norte Fluminense
## 5 3195 3301405         Conceição de Macabu    RJ Sudeste Norte Fluminense
## 6 3245 3304805                 São Fidélis    RJ Sudeste Norte Fluminense
## 7 3244 3304755 São Francisco de Itabapoana    RJ Sudeste Norte Fluminense
## 8 3210 3302403                       Macaé    RJ Sudeste Norte Fluminense
## 9 3190 3301009       Campos dos Goytacazes    RJ Sudeste Norte Fluminense
##                   micro Mu15 Mu20 Mu25 Mu30 Mu35 Mu40 Mu45 Cr15 Cr20 Cr25
## 1 Campos dos Goytacazes   52   54   46   50   50   45   47    1    3    3
## 2                 Macaé   61   58   59   56   56   51   48    4    6    6
## 3                 Macaé  102   90   86   79   80   81   72    5    9    6
## 4 Campos dos Goytacazes  156  134  136  131  116  127  120   10   12    8
## 5                 Macaé  103   90   83   85   79   85   77   16   10   10
## 6 Campos dos Goytacazes  167  148  148  149  147  145  144    7   12   11
## 7 Campos dos Goytacazes  195  178  161  166  156  153  144    8   13   18
## 8                 Macaé  941 1044 1142 1009  834  766  732   55   94   88
## 9 Campos dos Goytacazes 2169 2060 2079 1969 1748 1758 1747   91  160  169
##   Cr30 Cr35 Cr40 Cr45    Mu  Cr ZeroNasc
## 1    5    0    1    0   344  13    FALSE
## 2    4    2    1    0   389  23    FALSE
## 3    5    1    1    0   590  27    FALSE
## 4    8    3    1    0   920  42    FALSE
## 5    6    2    0    0   602  44    FALSE
## 6    9    4    2    0  1048  45    FALSE
## 7    8    2    0    1  1153  50    FALSE
## 8   53   28   14    1  6468 333    FALSE
## 9  109   59   17    4 13530 609    FALSE
select(tmp, id, munic, meso, Mu, Cr)
##        id                       munic             meso    Mu  Cr
## 1 3301157             Cardoso Moreira Norte Fluminense   344  13
## 2 3300936                   Carapebus Norte Fluminense   389  23
## 3 3304151                    Quissamã Norte Fluminense   590  27
## 4 3305000           São João da Barra Norte Fluminense   920  42
## 5 3301405         Conceição de Macabu Norte Fluminense   602  44
## 6 3304805                 São Fidélis Norte Fluminense  1048  45
## 7 3304755 São Francisco de Itabapoana Norte Fluminense  1153  50
## 8 3302403                       Macaé Norte Fluminense  6468 333
## 9 3301009       Campos dos Goytacazes Norte Fluminense 13530 609
########################
# summarize + group_by #
########################

# quantos mulheres na amostra de cada regiao
tmp = mutate(D,  Mu = Mu15+Mu20+Mu25+Mu30+Mu35+Mu40+Mu45)
tmp = group_by(tmp, reg)

R = summarize(tmp, totalMulheres = sum(Mu))
arrange(R, totalMulheres)
## Source: local data frame [5 x 2]
## 
##            reg totalMulheres
## 1 Centro-Oeste        427234
## 2        Norte        453410
## 3          Sul        794615
## 4     Nordeste       1556141
## 5      Sudeste       2370997
arrange(R, -totalMulheres)
## Source: local data frame [5 x 2]
## 
##            reg totalMulheres
## 1      Sudeste       2370997
## 2     Nordeste       1556141
## 3          Sul        794615
## 4        Norte        453410
## 5 Centro-Oeste        427234
##############
# pipe (%>%) #
##############

## arranje os municípios da meso Norte Fluminense em ordem descendente de número de
##  filhos recem-nasc., mostrando so o nome do munic, o nome da meso-reg, e o num. de Cr

D %>% 
  filter(meso == 'Norte Fluminense') %>%
  mutate(Cr = Cr15+Cr20+Cr25+Cr30+Cr35+Cr40+Cr45) %>%
  arrange( -Cr) %>%
  select(munic, meso, Cr)
##                         munic             meso  Cr
## 1       Campos dos Goytacazes Norte Fluminense 609
## 2                       Macaé Norte Fluminense 333
## 3 São Francisco de Itabapoana Norte Fluminense  50
## 4                 São Fidélis Norte Fluminense  45
## 5         Conceição de Macabu Norte Fluminense  44
## 6           São João da Barra Norte Fluminense  42
## 7                    Quissamã Norte Fluminense  27
## 8                   Carapebus Norte Fluminense  23
## 9             Cardoso Moreira Norte Fluminense  13
## quais so os 15 municip. no RN com as menores amostras de mulheres 20-24 ?
##   mostrando so a id, o nome do munic, e o num. de mulheres 20-24

D %>% 
  filter(sigla == 'RN') %>%
  mutate( posicao = rank(Mu20)) %>%
  filter( posicao <= 15) %>%
  arrange(posicao) %>%
  select(id, munic, Mu20)
##         id                 munic Mu20
## 1  2414902                Viçosa    8
## 2  2409605           Pedra Preta   10
## 3  2410603        Rafael Godeiro   10
## 4  2413805      Taboleiro Grande   10
## 5  2414308 Timbaúba dos Batistas   10
## 6  2404804               Ipueira   11
## 7  2401651                  Bodó   12
## 8  2405900             João Dias   12
## 9  2406403       Lagoa de Velhos   12
## 10 2410702        Riacho da Cruz   12
## 11 2403905      Francisco Dantas   13
## 12 2404101              Galinhos   13
## 13 2405504     Jardim de Angicos   13
## 14 2407906  Monte das Gameleiras   13
## 15 2409209              Passagem   13
## qual e a media das estimativas f20 = Cr20/Mu20 em cada estado?

D %>%
  group_by(sigla) %>%
  summarize( f20 = round( mean( Cr20/Mu20),3) ) %>%
  arrange( -f20) %>%
  print(n=27)
## Source: local data frame [27 x 2]
## 
##    sigla   f20
## 1     AM 0.177
## 2     RR 0.171
## 3     AP 0.158
## 4     MA 0.156
## 5     PA 0.156
## 6     TO 0.150
## 7     AC 0.149
## 8     AL 0.133
## 9     RO 0.127
## 10    MT 0.124
## 11    PI 0.123
## 12    MS 0.118
## 13    PB 0.115
## 14    PE 0.112
## 15    GO 0.110
## 16    SE 0.110
## 17    BA 0.106
## 18    RN 0.105
## 19    CE 0.101
## 20    PR 0.097
## 21    MG 0.094
## 22    ES 0.093
## 23    RJ 0.091
## 24    SP 0.090
## 25    SC 0.085
## 26    DF 0.072
## 27    RS 0.071
## quantos mesoregioes, microregioes, e municipios tem cada regiao
##  precisa-se colar a sigla da UF aos nomes para evitar nomes duplicados (e.g. Cruzeiro do Sul)
D %>% 
  group_by(reg) %>%
  mutate( mesoUF  = paste(meso,sigla), 
          microUF = paste(micro,sigla), 
          municUF = paste(munic,sigla)) %>%
  summarize( nmeso  = length(unique(mesoUF)),
             nmicro = length(unique(microUF)),
             nmunic = length(unique(municUF))) 
## Source: local data frame [5 x 4]
## 
##            reg nmeso nmicro nmunic
## 1 Centro-Oeste    15     52    466
## 2     Nordeste    42    187   1792
## 3        Norte    20     64    449
## 4      Sudeste    37    160   1668
## 5          Sul    23     94   1188
## TFT por regiao 
D %>%
  group_by(reg) %>%
  summarize( f15=sum(Cr15)/sum(Mu15), 
             f20=sum(Cr20)/sum(Mu20), 
             f25=sum(Cr25)/sum(Mu25), 
             f30=sum(Cr30)/sum(Mu30),
             f35=sum(Cr35)/sum(Mu35), 
             f40=sum(Cr40)/sum(Mu40), 
             f45=sum(Cr45)/sum(Mu45),
             TFT = 5*(f15+f20+f25+f30+f35+f40+f45) ) %>%
  arrange( -TFT) %>%
  select( reg, TFT)
## Source: local data frame [5 x 2]
## 
##            reg      TFT
## 1        Norte 2.109211
## 2     Nordeste 1.787173
## 3 Centro-Oeste 1.702279
## 4          Sul 1.592045
## 5      Sudeste 1.511288
## TFT por estado (exatamente igual, 
##  mas com 'sigla' no lugar de 'reg' na 2a e na penúltima linha) 
D %>%
  group_by(sigla) %>%
  summarize( f15=sum(Cr15)/sum(Mu15), 
             f20=sum(Cr20)/sum(Mu20), 
             f25=sum(Cr25)/sum(Mu25), 
             f30=sum(Cr30)/sum(Mu30),
             f35=sum(Cr35)/sum(Mu35), 
             f40=sum(Cr40)/sum(Mu40), 
             f45=sum(Cr45)/sum(Mu45),
             TFT = 5*(f15+f20+f25+f30+f35+f40+f45) ) %>%
  arrange( -TFT) %>%
  select( sigla, TFT) %>%
  print(n=27)
## Source: local data frame [27 x 2]
## 
##    sigla      TFT
## 1     AM 2.328853
## 2     AC 2.248735
## 3     AP 2.242333
## 4     RR 2.187072
## 5     PA 2.069671
## 6     MA 2.063338
## 7     AL 1.950379
## 8     TO 1.941437
## 9     MS 1.872545
## 10    PB 1.838033
## 11    RO 1.823385
## 12    PI 1.816709
## 13    SE 1.776951
## 14    MT 1.755695
## 15    PE 1.726782
## 16    BA 1.711589
## 17    CE 1.700009
## 18    RN 1.676062
## 19    GO 1.669669
## 20    PR 1.662086
## 21    ES 1.591996
## 22    SC 1.578171
## 23    DF 1.557278
## 24    MG 1.537955
## 25    RS 1.528809
## 26    SP 1.500902
## 27    RJ 1.486055