Trabalhando com dados estatísticos do Canadá em R, parte 5: recuperando dados do censo

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon Blog do entusiasta dos dados, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Voltar para Trabalhando com dados estatísticos do Canadá na R, parte 4.

  • Introdução
  • Pesquisando dados
    • Localizar conjuntos de dados do censo
    • Localizar regiões do censo
    • Encontre vetores do censo
  • Recuperar dados do censo
  • Anexo: Notas e Definições

Introdução

Agora que estamos prontos para começar a trabalhar com os dados do Censo Canadense, vamos primeiro abordar brevemente a pergunta por que você pode precisar usá-los. Afinal, os dados do CANSIM geralmente são mais atualizados e cobrem uma Muito de uma gama mais ampla de tópicos que os dados do censo nacional, reunidos a cada cinco anos em relação a um número limitado de perguntas.

O principal motivo é que os dados do CANSIM são muito menos granulares geograficamente. A maior parte é coletada em nível regional ou provincial. Talvez seja possível encontrar dados do CANSIM em um número limitado de perguntas para algumas das maiores áreas metropolitanas do país, mas se você precisar dos dados de uma divisão, cidade, vila ou vila censitária específica, precisará usar o Censo .

Para ilustrar o uso de cancelamento pacote, vamos fazer um pequeno projeto de pesquisa. Primeiro, nesta postagem, recuperaremos essas principais características da força de trabalho das maiores áreas metropolitanas em cada uma das cinco regiões geográficas do Canadá:

  • Taxa de participação na força de trabalho, taxa de emprego e taxa de desemprego.
  • Porcentagem de trabalhadores por situação de trabalho: tempo integral versus tempo parcial, por gênero.
  • Níveis de escolaridade das pessoas de 25 a 64 anos, por gênero.

As cidades (áreas metropolitanas) que vamos ver são: Calgary, Halifax, Toronto, Vancouver e Whitehorse. Também obteremos esses dados para o Canadá como um todo para comparação e ilustrar a recuperação de dados em diferentes níveis geográficos

A seguir, na próxima parte 6 da série “Trabalhando com dados estatísticos do Canadá em R”, visualizaremos esses dados, incluindo a criação de um gráfico facetado e a criação de uma função para automatizar tarefas repetitivas de plotagem.

Tenha em mente que cancelamento também permite recuperar geoespacial dados, isto é, fronteiras das regiões censitárias em vários níveis geográficos, sp e sf formatos. A recuperação e visualização dos dados geoespaciais do Statistics Canada serão abordadas mais adiante nesta série.

Então, vamos começar carregando os pacotes necessários:

library(cancensus)
library(tidyverse)

Pesquisando dados

cancelamento recupera dados do censo com o get_census função. get_census pode levar uma série de argumentos, dos quais os mais importantes são conjunto de dados, regiõese vetores, que não têm padrões. Portanto, para recuperar dados do censo, primeiro você precisa descobrir:

  • seu conjunto de dados,
  • sua (s) região (ões) e
  • seu (s) vetor (es) de dados.

Localizar conjuntos de dados do censo

Vamos ver quais conjuntos de dados do censo estão disponíveis por meio da API do CensusMapper:

list_census_datasets()

Atualmente, conjuntos de dados anteriores a 2001 não estão disponíveis; portanto, se você precisar trabalhar com os dados do censo do século XX, não poderá recuperá-los com cancelamento.

Localizar regiões do censo

Em seguida, vamos encontrar as regiões para as quais obteremos os dados. Para procurar regiões do censo, use o search_census_regions função.

Vamos dar uma olhada em que pesquisa por região retorna para Toronto. Observe que cancelamento As funções retornam sua saída como quadros de dados, facilitando o subconjunto. Aqui, limitei a saída às colunas mais relevantes para garantir que ela caiba na tela. Você pode executar o código sem [c(1:5, 8)] para ver tudo isso.

# all census levels
search_census_regions(searchterm = "Toronto", 
                      dataset = "CA16")[c(1:5, 8)]

Devoluções:

A tibble: 3 x 6
# region  name    level     pop municipal_status PR_UID
                          
1 35535   Toronto CMA   5928040 B                35    
2 3520    Toronto CD    2731571 CDR              35    
3 3520005 Toronto CSD   2731571 C                35    

Você pode esperar ter apenas uma região: a cidade de Toronto, mas você tem três! Então qual é a diferença? Olhe para a coluna ‘nível’ pela resposta. Freqüentemente, a mesma região geográfica pode ser representada por vários níveis censitários, como é o caso aqui. Existem três níveis para Toronto, que é simultaneamente uma área metropolitana do censo, uma divisão do censo e uma subdivisão do censo. Observe também o “PR_UID” coluna que contém códigos numéricos para províncias e territórios do Canadá, o que pode ajudá-lo a distinguir entre diferentes regiões do censo com nomes iguais ou semelhantes. Por exemplo, execute o código acima substituindo “Toronto” por “Windsor”.

Leia Também  RcppSimdJson 0.0.3: Segunda atualização! | R-bloggers

Lembra que íamos plotar os dados para as áreas metropolitanas do censo? Você pode escolher o nível geográfico com o nível argumento, que pode assumir os seguintes valores: ‘C’ para o Canadá (nível nacional), ‘PR’ para província, ‘CMA’ para a área metropolitana do censo, ‘CD’ para a divisão do censo, ‘CSD’ para a subdivisão do censo ou N / D:

# specific census level
search_census_regions("Toronto", "CA16", level = "CMA")

Vamos agora listar as regiões do censo que podem ser relevantes para o nosso projeto:

# explore available census regions
names <- c("Canada", "Calgary", "Halifax", 
           "Toronto", "Vancouver", "Whitehorse")
map_df(names, ~ search_census_regions(., dataset = "CA16"))

purrr :: map_df a função se aplica search_census_regions iterativamente a cada elemento do nomes vector e retorna a saída como um único quadro de dados. Observe também o ~. sintaxe. Pense nisso como a tomada de til nomes e transmiti-lo como argumento para um local indicado pelo ponto no search_census_regions função. Você pode encontrar mais informações sobre a sintaxe til-dot aqui. Pode ser uma boa ideia ler o tutorial inteiro: ronronar é um pacote super útil, mas não é o mais fácil de aprender, e este tutorial faz um ótimo trabalho explicando o básico.

Portanto, como você pode ver, existem várias entradas para cada termo de pesquisa, portanto, precisamos escolher os resultados para as áreas metropolitanas do censo e para a subdivisão do censo no caso de Whitehorse, já que Whitehorse é muito pequeno para ser considerado um censo área metropolitana:

# select only the regions we need: CMAs (and CSD for Whitehorse)
regions % 
  filter(grepl("Calgary|Halifax|Toronto|Vancouver", name) &
         grepl("CMA", level) | 
         grepl("Canada|Whitehorse$", name)) %>% 
  as_census_region_list()

Preste atenção ao uso de operadores lógicos para filtrar a saída por várias condições ao mesmo tempo; observe também o uso $ meta-caractere regex para escolher a entrada final com 'Whitehorse' do 'Nomes' coluna (para filtrar "Whitehorse, desorganizado".

Finalmente, as_census_region_list converte list_census_regions saída para um objeto de dados do tipo Lista que pode ser passado para o get_census funcionar como regiões argumento.

Encontre vetores do censo

Os dados do censo canadense são compostos de variáveis ​​individuais, também conhecidas como vetores de censo. Número (s) de vetores é outro argumento que você precisa especificar para recuperar dados com o get_census função.

cancelamento possui duas funções que permitem pesquisar por variáveis ​​de dados do censo: list_census_vectors e search_census_vectors.

list_census_vectors retorna todos vetores disponíveis para um determinado conjunto de dados como um único quadro de dados contendo vetores e suas descrições:

# structure of list_census_vectors output
str(list_census_vectors(dataset = 'CA16'))

# count variables in 'CA16' dataset
nrow(list_census_vectors(dataset = 'CA16'))

Como você pode ver, há 6623 (no momento em que escrevemos isso) variáveis ​​no conjunto de dados do censo de 2016, então list_census_vectors não será a função mais conveniente para encontrar um vetor específico. Observe, no entanto, que existem situações (como quando você precisa selecionar muitos vetores de uma só vez), nas quais list_census_vectors seria apropriado.

Geralmente é mais conveniente usar search_census_vectors para pesquisar vetores. Basta passar a sequência de texto do que você está procurando como termo de pesquisa argumento. Você não precisa ser preciso: essa função funciona mesmo se você digitar um erro de digitação ou não tiver certeza sobre a ortografia do seu termo de pesquisa.

Vamos agora encontrar vetores de dados do censo para taxas de envolvimento da força de trabalho:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
# get census data vectors for labor force involvement rates
lf_vectors % 
  union(search_census_vectors("participation rate", "CA16")) %>% 
  filter(type == "Total") %>% 
  pull(vector)

Vamos dar uma olhada no que esse código faz. Desde a termo de pesquisa não precisa ser uma correspondência precisa, o termo de pesquisa "taxa de emprego" também recupera os vetores da taxa de desemprego. Na próxima linha, União mescla quadros de dados retornados por search_census_vectors em um único quadro de dados. Observe que, neste caso União poderia ser substituído por bind_rows. Eu recomendo usar União para evitar duplicação de dados. Em seguida, escolhemos apenas os números "Total", pois não vamos traçar indicadores da força de trabalho por gênero. finalmente, o puxar O comando extrai um único vetor do quadro de dados, assim como o $ operador de subconjunto: precisamos "Lf_vectors" ser um objeto de dados do tipo vetor para passar para o vetores argumento do get_census função.

Leia Também  Desenvolvendo um aplicativo R Shiny complexo - o bom, o ruim e o feio

O segundo indicador da força de trabalho que procuramos é o número de pessoas que trabalham em período integral e meio período, discriminadas por gênero. Porém, antes de prosseguirmos com a obtenção dos respectivos vetores, deixe-me mostrar outra maneira de descobrir termos de pesquisa a serem inseridos no search_census_vectors função: use a ferramenta de perfil de censo do Statistics Canada online. Ele pode ser usado para explorar rapidamente os dados do censo, bem como para descobrir nomes de variáveis ​​(termos de pesquisa) e sua estrutura hierárquica.

Por exemplo, vamos analisar os dados do trabalho censitário da área metropolitana de Calgary. Ao rolar para baixo, você encontrará rapidamente os números e as etiquetas de texto para trabalhadores de meio período e período integral:

Agora sabemos os termos exatos da pesquisa, para que possamos obter com precisão os vetores de que precisamos, sem quaisquer dados estranhos:

# get census data vectors for full and part time work

# get vectors and labels    
work_vectors_labels % 
  union(search_census_vectors("part year and/or part time", "CA16")) %>% 
  filter(type != "Total") %>% 
  select(1:3) %>% 
  mutate(label = str_remove(label, ".*, |.*and/or ")) %>% 
  mutate(type = fct_drop(type)) %>% 
  setNames(c("vector", "gender", "type"))

# extract vectors
work_vectors <- work_vectors_labels$vector

Observe como esse código difere do código com o qual extraímos as taxas de envolvimento da força de trabalho: uma vez que precisamos que os dados sejam subdivididos tanto pelo tipo de trabalho e por sexo (portanto, não há valores "totais" aqui), criamos um quadro de dados que atribui os respectivos rótulos a cada número de vetor. este work_vectors_labels O dataframe fornecerá etiquetas categóricas a serem anexadas aos dados recuperados com get_census.

Além disso, observe estas três linhas:

  mutate(label = str_remove(label, ".*, |.*and/or ")) %>% 
  mutate(type = fct_drop(type)) %>% 
  setNames(c("vector", "gender", "type"))

O primeiro mudar chamada remove todo o texto até, incluindo ‘,‘ e ‘e / ou‘ (espaços incluídos) do 'rótulo' coluna. O segundo descarta o nível de fator não utilizado “Total” - é uma boa prática garantir que não haja níveis de fator não utilizados se você for usar ggplot2 para plotar seus dados. Finalmente, setNames renomeia variáveis ​​por conveniência.

Por fim, vamos recuperar vetores para os dados educacionais da faixa etária de 25 a 64 anos, por gênero. Antes de fazer isso, gostaria de chamar sua atenção para o fato de alguns dados do censo serem hierárquicos, o que significa que algumas variáveis ​​(vetores do censo) são incluídas nos pais e / ou incluem variáveis ​​filhos. É muito importante escolher vetores em níveis hierárquicos adequados para não contar duas vezes ou omitir seus dados.

Dados educacionais são um bom exemplo de dados hierárquicos. Você pode explorar a hierarquia de dados usando parent_census_vectors e child_census_vectors funciona como descrito aqui. No entanto, você pode explorar a hierarquia visualmente usando a ferramenta Statistics Canada Census Profile para ser mais conveniente:

Então, agora vamos recuperar e rotular os vetores de dados educacionais:

# get census vectors for education levels data

# get vectors and labels
ed_vectors_labels %
  union(search_census_vectors("degree", "CA16")) %>%
  union(search_census_vectors("doctorate", "CA16")) %>%
  filter(type != "Total") %>%
  filter(grepl("25 to 64 years", details)) %>%
  slice(-1,-2,-7,-8,-11:-14,-19,-20,-23:-28) %>%
  select(1:3) %>%
  mutate(label =
           str_remove_all(label,
                          " cert.*diploma| dipl.*cate|, CEGEP| level|")) %>%
  mutate(label =
           str_replace_all(label, 
                           c("No.*" = "None",
                             "Secondary.*" = "High school or equivalent",
                             "other non-university" = "equivalent",
                             "University above" = "Cert. or dipl. above",
                             "medicine.*" = "health**",
                             ".*doctorate$" = "Doctorate*"))) %>%
  mutate(type = fct_drop(type)) %>%
  setNames(c("vector", "gender", "level"))

# extract vectors
ed_vectors <- ed_vectors_labels$vector

Note o fatia função que permite selecionar manualmente linhas específicas de um quadro de dados: números positivos escolhem linhas a serem mantidas, números negativos escolhem linhas a serem descartadas. Usei fatia para eliminar os níveis hierárquicos dos dados que são muito generalizados ou muito granulares. Observe também que eu tive que editar cadeias de texto nos dados. Por fim, adicionei asteriscos depois de "Doutorado" e "Saúde". Esses não são símbolos de expressões regulares, mas asteriscos reais que serão usados ​​para se referir às notas de rodapé nas legendas da plotagem posteriormente.

Agora que descobrimos nosso conjunto de dados, regiões e vetores de dados (e também rotulamos os vetores), finalmente estamos prontos para recuperar os dados em si.

Leia Também  Criando relatórios do MS Word usando o pacote oficial

Recuperar dados do censo

Para recuperar dados do censo, alimente o conjunto de dados, regiões e vetores de dados no get_census como seus respectivos argumentos. Note também que get_census tem use_cache argumento (definido como VERDADE por padrão), que informa get_census recuperar dados do cache, se disponível. Se não houver dados em cache, a função consultará os dados da API CensusMapper e salvará em cache, enquanto use_cache = FALSE forçará get_census para consultar a API e atualizar o cache.

# get census data for labor force involvement rates
# feed regions and vectors into get_census()
labor % 
  select(-c(1, 2, 4:7)) %>% 
  setNames(c("region", "employment rate", 
             "unemployment rate", 
             "participation rate")) %>% 
  mutate(region = str_remove(region, " (.*)")) %>% 
  pivot_longer("employment rate":"participation rate", 
               names_to = "indicator",
               values_to = "rate") %>% 
  mutate_if(is.character, as_factor)

o selecionar chamada descarta colunas com dados irrelevantes, setNames renomeia as colunas para remover números de vetores de nomes de variáveis, que serão convertidos em valores no 'indicador' coluna; str_remove dentro de mudar a chamada retira os códigos de status municipais '(B)' e '(CY)' dos nomes das regiões; finalmente, mutate_if converte caracteres em fatores para plotagem subsequente.

Uma função importante aqui é tidyr :: pivot_longer. Ele converte o quadro de dados do formato amplo para o longo. São necessárias três colunas: 'taxa de emprego', 'taxa de desemprego'e 'taxa de participação'e converte seus nomes em valores do 'indicador' variável, enquanto seus valores numéricos são passados ​​para o 'taxa' variável. O motivo da conversão é que vamos plotar os dados para todos os três indicadores da força de trabalho no mesmo gráfico, o que torna necessário armazenar os indicadores como uma variável de fator único.

Em seguida, vamos recuperar dados do censo sobre a porcentagem de trabalhadores em período integral ou em regime de meio período, por gênero, e os dados sobre os níveis de educação de pessoas de 25 a 64 anos, por gênero:

# get census data for full time and part time work
work % 
  select(-c(1, 2, 4:7)) %>% 
  rename(region = "Region Name") %>% 
  pivot_longer(2:5, names_to = "vector", 
                    values_to = "count") %>% 
  mutate(region = str_remove(region, " (.*)")) %>% 
  mutate(vector = str_remove(vector, ":.*")) %>% 
  left_join(work_vectors_labels, by = "vector") %>% 
  mutate(gender = str_to_lower(gender)) %>% 
  mutate_if(is.character, as_factor)

# get census data for education levels
education % 
  select(-c(1, 2, 4:7)) %>% 
  rename(region = "Region Name") %>% 
  pivot_longer(2:21, names_to = "vector", 
                     values_to = "count") %>% 
  mutate(region = str_remove(region, " (.*)")) %>% 
  mutate(vector = str_remove(vector, ":.*")) %>% 
  left_join(ed_vectors_labels, by = "vector") %>% 
  mutate_if(is.character, as_factor)

Observe uma diferença importante do código que eu usei para recuperar os dados de envolvimento da força de trabalho: aqui eu adicionei o dplyr :: left_join função que une rótulos aos dados do censo.

Agora temos os dados e estamos prontos para visualizá-los, o que será feito no próximo post.

Anexo: Notas e Definições

Para aqueles que estão fora do Canadá, o Canadá geográfico regiões e suas maiores áreas metropolitanas são:

  • As províncias do Atlântico - Halifax
  • Canadá Central - Toronto
  • Províncias da pradaria - Calgary
  • Costa Oeste - Vancouver
  • Territórios do Norte - Whitehorse

Essas regiões não devem ser confundidas com 10 províncias e 3 territórios, que são subnacionais do Canadá administrativo divisões, assim como estados nos EUA. Cada região consiste em várias províncias ou territórios, exceto a Costa Oeste, que inclui apenas uma província - Colúmbia Britânica. Você pode encontrar mais informações sobre as regiões geográficas e a estrutura territorial do Canadá aqui (páginas 44 a 51).

Para as definições de taxa de emprego, taxa de desemprego, taxa de participação na força de trabalho, trabalho em período integrale trabalho a tempo parcial, consulte o Guia do Statistics Canada para a pesquisa da força de trabalho.

Você pode encontrar mais informações sobre as áreas geográficas do censo aqui e aqui. Há também um glossário de conceitos geográficos relacionados ao censo.

A publicação Trabalhando com Dados Estatísticos do Canadá em R, Parte 5: Recuperando Dados do Censo, apareceu pela primeira vez no Blog do Data Enthusiast.

var vglnk = {key: '949efb41171ac6ec1bf7f206d57e90b8'};

(função (d, t) {
var s = d.createElement
s.src = '//cdn.viglink.com/api/vglnk.js';
var r = d.getElementsByTagName
} (documento, 'script'));

Para Deixe um comentário para o autor, siga o link e comente no blog: Blog do entusiasta dos dados.

R-bloggers.com oferece atualizações diárias por email sobre notícias e tutoriais do R sobre o aprendizado do R e muitos outros tópicos. Clique aqui se você deseja publicar ou encontrar um emprego em ciência da dados / R.


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br