Em nossas últimas aulas, introduzimos o conceito de análise de dados e alguns comandos básicos em R. Nessa aula, vamos avançar mais na linguagem de programação R.
Na aula passada, introduzimos os conceitos de estrutura de dados. De início, vamos avançar um pouco mais na manipulação de data.frames. Para tanto, vamos criar um modelo de exemplo para, depois, experimentarmos os comandos.
set.seed(111)
Idade<-rnorm(mean = 22, sd = 3, n = 10) # o comando rnorm gera "n" números com determinada média (mean) e desvio-padrão (sd)
Sexo<-c( #criando um vetor
rep(2,6), # comando rep() repete valores. Nesse caso, repetimos o número dois, seis vezes.
rep(1,4) # repetindo o número um, quatro vezes.
)
Nomes<-c("Renata", "Rúbia", "Regina", "Rosângela", "Roberta", "Rosa", "Renato", "Rubens", "Rogério", "Reginaldo")
dd<-data.frame( # criando data.frame
Idade = Idade,
Sexo = Sexo,
Nomes = Nomes
)
dd
## Idade Sexo Nomes
## 1 22.70566 2 Renata
## 2 21.00779 2 Rúbia
## 3 21.06513 2 Regina
## 4 15.09296 2 Rosângela
## 5 21.48737 2 Roberta
## 6 22.42083 2 Rosa
## 7 17.50772 1 Renato
## 8 18.96943 1 Rubens
## 9 19.15457 1 Rogério
## 10 20.51811 1 Reginaldo
Caso eu tenha uma série de conceitos de uma avaliação e consiga
ordenar, previamente, segundo os registros do data.frame, eu posso
utilizar o comando cbind()
.
Conceitos<-c("A","B","A","D","A","C","B","D","B","B")
dd<-cbind(dd, Conceitos)
dd
## Idade Sexo Nomes Conceitos
## 1 22.70566 2 Renata A
## 2 21.00779 2 Rúbia B
## 3 21.06513 2 Regina A
## 4 15.09296 2 Rosângela D
## 5 21.48737 2 Roberta A
## 6 22.42083 2 Rosa C
## 7 17.50772 1 Renato B
## 8 18.96943 1 Rubens D
## 9 19.15457 1 Rogério B
## 10 20.51811 1 Reginaldo B
Da mesma forma, podemos incluir uma linha de registro, a partir da adição de um novo vetor.
dd<-rbind(dd,
c(20,2,"Rosimery","A"))
dd
## Idade Sexo Nomes Conceitos
## 1 22.7056621348411 2 Renata A
## 2 21.0077923851199 2 Rúbia B
## 3 21.0651285280637 2 Regina A
## 4 15.0929630247119 2 Rosângela D
## 5 21.4873718661584 2 Roberta A
## 6 22.4208346753097 2 Rosa C
## 7 17.5077200333047 1 Renato B
## 8 18.9694347428459 1 Rubens D
## 9 19.1545731851427 1 Rogério B
## 10 20.5181133482947 1 Reginaldo B
## 11 20 2 Rosimery A
Veja que, por cada campo ter um tipo de atributo, mesmo que a
tendência fosse todo o vetor se tornar do tipo character
, o
que observamos é que foi respeitado o tipo de campo presente no data
frame.Nós podemos modificar algum registro, a partir dos índices da
tabela. Por exemplo, poderíamos mudar o nome da aluna “Rosa” para
“Rosane”.
dd$Nomes[dd$Nomes=="Rosa"]<-"Rosane"
dd
## Idade Sexo Nomes Conceitos
## 1 22.7056621348411 2 Renata A
## 2 21.0077923851199 2 Rúbia B
## 3 21.0651285280637 2 Regina A
## 4 15.0929630247119 2 Rosângela D
## 5 21.4873718661584 2 Roberta A
## 6 22.4208346753097 2 Rosane C
## 7 17.5077200333047 1 Renato B
## 8 18.9694347428459 1 Rubens D
## 9 19.1545731851427 1 Rogério B
## 10 20.5181133482947 1 Reginaldo B
## 11 20 2 Rosimery A
Podemos subdividir as tabelas, segundo algum valor de interesse.
Comecemos com o comando split()
que irá segmentar a tabela
segundo alguma categoria.
ss<-split(x=dd,f=dd$Conceitos)
ss
## $A
## Idade Sexo Nomes Conceitos
## 1 22.7056621348411 2 Renata A
## 3 21.0651285280637 2 Regina A
## 5 21.4873718661584 2 Roberta A
## 11 20 2 Rosimery A
##
## $B
## Idade Sexo Nomes Conceitos
## 2 21.0077923851199 2 Rúbia B
## 7 17.5077200333047 1 Renato B
## 9 19.1545731851427 1 Rogério B
## 10 20.5181133482947 1 Reginaldo B
##
## $C
## Idade Sexo Nomes Conceitos
## 6 22.4208346753097 2 Rosane C
##
## $D
## Idade Sexo Nomes Conceitos
## 4 15.0929630247119 2 Rosângela D
## 8 18.9694347428459 1 Rubens D
class(ss)
## [1] "list"
Vejam que o comando split()
cria um objeto do tipo
list
, com vários objetos do tipo data.frame
dentro dele. Contudo, podemos apenas ter o interesse em filtrar somente
uma determinada categoria ou um grupo de condições. para tanto, usaremos
o comando subset()
ao invés de utilizar os índices do
objeto, ou mesmo $
.
s<-subset(dd,dd$Conceitos=="A")
s
## Idade Sexo Nomes Conceitos
## 1 22.7056621348411 2 Renata A
## 3 21.0651285280637 2 Regina A
## 5 21.4873718661584 2 Roberta A
## 11 20 2 Rosimery A
iii<-subset(dd,dd$Idade>22)
iii
## Idade Sexo Nomes Conceitos
## 1 22.7056621348411 2 Renata A
## 6 22.4208346753097 2 Rosane C
si<-subset(dd,dd$Idade>22&dd$Conceitos=="A") # o operador '&' tem função de 'E' em teste lógico
si
## Idade Sexo Nomes Conceitos
## 1 22.7056621348411 2 Renata A
si2<-subset(dd,dd$Idade>22|dd$Conceitos=="A") # o operador '|' tem função de 'OU' em teste lógico
si2
## Idade Sexo Nomes Conceitos
## 1 22.7056621348411 2 Renata A
## 3 21.0651285280637 2 Regina A
## 5 21.4873718661584 2 Roberta A
## 6 22.4208346753097 2 Rosane C
## 11 20 2 Rosimery A
Usaremos bastente os operadores lógicos no futuro.
Usaremos, a seguir, alguns comandos para carregar e escrever arquivos
em formato .csv
.xlsx
, .dbf
e
.txt
.
O comando scan()
serve para colarmos valores que estão
na área de transferência como tabela.
x<-scan()
#aparecerá um espaço para colar valores e transformar o objeto x em uma tabela
O comando scan()
irá permitir a inclusão de um vetor de
dados por vez.
Podemos, contudo, ler diretamente de um arquivo, sem precisar utilizar comandos de copiar e colar. Para tanto, façamos donwload dos arquivos de dados presentes em https://covid.saude.gov.br.
Depois de descompactar, você verá vários arquivos no formato
.csv
. Estes arquivos referem-se a pandemia de Covid-19,
distribuiídos por data e recorte territorial. Nosso objetivo aqui é
apenas abrir os arquivos, por enquanto.
Antes de utilizar o comando, precisamos do endereço de onde a pasta
está. podemos copiar ou utilizar o comando choose.dir()
,
que apontará qual a pasta ou diretório, ou o comando
choose.files()
, que apontará a localização do arquivo.
dd<-read.table("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\HIST_PAINEL_COVIDBR_30nov2024\\HIST_PAINEL_COVIDBR_2022_Parte2_30nov2024.csv",
sep = ";",dec = ",",quote = "",header = TRUE)
Vocês podem utilizar o comando View()
para visualizar em
uma outra aba, ou ainda editar manualmente, com o comando
edit()
. Também é possível observar apenas as primeiras
linhas, ou as últimas:
tail(dd) # mostra, no console, os cinco últimos registros da tabela
## regiao estado municipio coduf codmun codRegiaoSaude
## 1033891 Centro-Oeste DF Brasília 53 530010 53001
## 1033892 Centro-Oeste DF Brasília 53 530010 53001
## 1033893 Centro-Oeste DF Brasília 53 530010 53001
## 1033894 Centro-Oeste DF Brasília 53 530010 53001
## 1033895 Centro-Oeste DF Brasília 53 530010 53001
## 1033896 Centro-Oeste DF Brasília 53 530010 53001
## nomeRegiaoSaude data semanaEpi populacaoTCU2019 casosAcumulado
## 1033891 DISTRITO FEDERAL 2022-12-26 52 3015268 885285
## 1033892 DISTRITO FEDERAL 2022-12-27 52 3015268 886049
## 1033893 DISTRITO FEDERAL 2022-12-28 52 3015268 886923
## 1033894 DISTRITO FEDERAL 2022-12-29 52 3015268 887514
## 1033895 DISTRITO FEDERAL 2022-12-30 52 3015268 888063
## 1033896 DISTRITO FEDERAL 2022-12-31 52 3015268 888063
## casosNovos obitosAcumulado obitosNovos Recuperadosnovos
## 1033891 1336 11838 0 NA
## 1033892 764 11838 0 NA
## 1033893 874 11838 0 NA
## 1033894 591 11838 0 NA
## 1033895 549 11838 0 NA
## 1033896 0 11838 0 NA
## emAcompanhamentoNovos interior.metropolitana
## 1033891 NA 1
## 1033892 NA 1
## 1033893 NA 1
## 1033894 NA 1
## 1033895 NA 1
## 1033896 NA 1
head(dd) # mostra, no console, os cinco primeiros registros da tabela
## regiao estado municipio coduf codmun codRegiaoSaude nomeRegiaoSaude
## 1 Brasil 76 NA NA
## 2 Brasil 76 NA NA
## 3 Brasil 76 NA NA
## 4 Brasil 76 NA NA
## 5 Brasil 76 NA NA
## 6 Brasil 76 NA NA
## data semanaEpi populacaoTCU2019 casosAcumulado casosNovos
## 1 2022-07-01 26 210147125 32434063 76045
## 2 2022-07-02 26 210147125 32471847 37784
## 3 2022-07-03 27 210147125 32490422 18575
## 4 2022-07-04 27 210147125 32535923 45501
## 5 2022-07-05 27 210147125 32610514 74591
## 6 2022-07-06 27 210147125 32687680 77166
## obitosAcumulado obitosNovos Recuperadosnovos emAcompanhamentoNovos
## 1 671700 284 30873682 888681
## 2 671858 158 30880584 919405
## 3 671911 53 30906575 911936
## 4 672033 122 30967114 896776
## 5 672429 396 31039055 899030
## 6 672790 361 31077538 937352
## interior.metropolitana
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
View(tail(dd,50)) # mostra, em uma aba separada, os 50 últimos registros.
View(head(dd,20)) # mostra, em uma aba separada, os 20 primeiros registros.
Os comandos read.csv()
e read.csv2()
lêem
arquivos .csv
. A diferença é que, enquanto o primeiro lê
arquivos com separador ,
para os campos, segundo utiliza
;
. Por isso, em geral, utilizamos no Brasil o
read.csv2()
.
dd<-read.csv("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\HIST_PAINEL_COVIDBR_30nov2024\\HIST_PAINEL_COVIDBR_2022_Parte2_30nov2024.csv")
head(dd)
## regiao.estado.municipio.coduf.codmun.codRegiaoSaude.nomeRegiaoSaude.data.semanaEpi.populacaoTCU2019.casosAcumulado.casosNovos.obitosAcumulado.obitosNovos.Recuperadosnovos.emAcompanhamentoNovos.interior.metropolitana
## 1 Brasil;;;76;;;;2022-07-01;26;210147125;32434063;76045;671700;284;30873682;888681;
## 2 Brasil;;;76;;;;2022-07-02;26;210147125;32471847;37784;671858;158;30880584;919405;
## 3 Brasil;;;76;;;;2022-07-03;27;210147125;32490422;18575;671911;53;30906575;911936;
## 4 Brasil;;;76;;;;2022-07-04;27;210147125;32535923;45501;672033;122;30967114;896776;
## 5 Brasil;;;76;;;;2022-07-05;27;210147125;32610514;74591;672429;396;31039055;899030;
## 6 Brasil;;;76;;;;2022-07-06;27;210147125;32687680;77166;672790;361;31077538;937352;
dd<-read.csv2("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\HIST_PAINEL_COVIDBR_30nov2024\\HIST_PAINEL_COVIDBR_2022_Parte2_30nov2024.csv")
head(dd)
## regiao estado municipio coduf codmun codRegiaoSaude nomeRegiaoSaude
## 1 Brasil 76 NA NA
## 2 Brasil 76 NA NA
## 3 Brasil 76 NA NA
## 4 Brasil 76 NA NA
## 5 Brasil 76 NA NA
## 6 Brasil 76 NA NA
## data semanaEpi populacaoTCU2019 casosAcumulado casosNovos
## 1 2022-07-01 26 210147125 32434063 76045
## 2 2022-07-02 26 210147125 32471847 37784
## 3 2022-07-03 27 210147125 32490422 18575
## 4 2022-07-04 27 210147125 32535923 45501
## 5 2022-07-05 27 210147125 32610514 74591
## 6 2022-07-06 27 210147125 32687680 77166
## obitosAcumulado obitosNovos Recuperadosnovos emAcompanhamentoNovos
## 1 671700 284 30873682 888681
## 2 671858 158 30880584 919405
## 3 671911 53 30906575 911936
## 4 672033 122 30967114 896776
## 5 672429 396 31039055 899030
## 6 672790 361 31077538 937352
## interior.metropolitana
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
Para trabalhar como arquivos em format .xlsx
, primeiro
vamos buscar um exemplo. usaremos o comando download.file()
para buscar um arquivo na internet. Vamos usar, como exemplo, a página
de dados abertos da SES-MG (https://coronavirus.saude.mg.gov.br/dadosabertos)
download.file(url="https://sescloud.saude.mg.gov.br/index.php/s/ZEzzC8jFpobXGjM/download?path=%2FPAINEL_COVID&files=XLSX_Painel_2023.xlsx",
destfile = "C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\dados.xlsx",method = "curl")
Reparem que o argumento url
contem o endereço do arquivo
- copiado da página utilizando o botão direito e “copiar endereço do
link” - e o comando destfile
corresponde a paste de
destino. O método padrão será sempre curl
. Você deverá
alterar o arquivo de destino para a sua máquina. A partir do arquivo em
sua pasta de destino, podemos fazer o carregamento com o comando
read.xlsx()
. Contudo ele não está presente no pacote básico
de comandos do R e, por isso, deverá ser instalado e carregado.
#install.packages("openxlsx", repos = "https://cloud.r-project.org") # openxlsx é o nome do pacote.
# se ele já estiver instalado
library(openxlsx) # carregando o pacote
dados<-read.xlsx("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\dados.xlsx", sheet = "Plan1", detectDates = TRUE)
head(dados)
## MUNICIPIO_RESIDENCIA CodigoIBGE URS Micro
## 1 ABADIA DOS DOURADOS 310010 UBERLÂNDIA PATROCÍNIO/MONTE CARMELO
## 2 ABAETE 310020 SETE LAGOAS SETE LAGOAS
## 3 ABRE CAMPO 310030 MANHUAÇU MANHUAÇU
## 4 ACAIACA 310040 PONTE NOVA PONTE NOVA
## 5 ACUCENA 310050 CORONEL FABRICIANO IPATINGA
## 6 AGUA BOA 310060 GOVERNADOR VALADARES SANTA MARIA DO SUAÇUÍ
## Macro Data Semana.Epidemiologia CONFIRMADOS
## 1 Triângulo Do Norte 2023-01-01 2023 SE 01 4
## 2 Centro 2023-01-01 2023 SE 01 61
## 3 Leste Do Sul 2023-01-01 2023 SE 01 0
## 4 Leste Do Sul 2023-01-01 2023 SE 01 -1
## 5 Vale Do Aço 2023-01-01 2023 SE 01 7
## 6 Leste 2023-01-01 2023 SE 01 3
O argumento sheet
serve para identificar qual planilha
deve ser aberta, caso o arquivo tenha mais de uma. O argumento
detectDates
identifica, automaticamente, os campos
data.
O formato .dbf
é específico para armazenamento de dados.
Existem outros formatos, mas o .dbf
é o formato utilizado
para relacionar dados aos vetores em arquivos no formato
.shp
(shapefiles). Vamos buscar um exemplo no site do IBGE.
Usaremos o exemplo da malha territorial de municípios, descompactando o
.zip
após o download.
#install.packages("foreign") # pacote específico para abrir arquivos .dbf
library(foreign)
dados<-read.dbf("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\AC_Municipios_2022\\AC_Municipios_2022.dbf")
head(dados)
## CD_MUN NM_MUN SIGLA_UF AREA_KM2
## 1 1200013 Acrelândia AC 1811.613
## 2 1200054 Assis Brasil AC 4979.073
## 3 1200104 Brasiléia AC 3928.174
## 4 1200138 Bujari AC 3034.869
## 5 1200179 Capixaba AC 1705.824
## 6 1200203 Cruzeiro do Sul AC 8783.470
O comando read.fwf()
oferece uma alternativa de leitura
de dados pela posição dos caracteres, quando não há separador de campos.
O caso mais frequente de leitura de dados dessa natureza é o censo
demográfico brasileiro. Claro que a leitura depende de um dicionário que
indique qual a posição de cada campo, bem como o seu comprimento.
Façamos download dos dados do Censo Demográfico de 2010, para o Estado
do Acre no site
do IBGE
ac<-read.fwf("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\AC\\AC\\Amostra_Pessoas_12.txt", widths = c(2))
head(ac)
## V1
## 1 12
## 2 12
## 3 12
## 4 12
## 5 12
## 6 12
Acima criamos um data.frame
com um campo de tamanho
dois (dois caracteres). Passaremos para utilizar 3
campos. Vamos, também, trocar os nomes das variáveis.
ac<-read.fwf("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\AC\\AC\\Amostra_Pessoas_12.txt", widths = c(2,5,13,8),col.names = c("V0001","V0002","V0011","V0300"))
head(ac)
## V0001 V0002 V0011 V0300
## 1 12 13 1.200013e+12 20683
## 2 12 13 1.200013e+12 20693
## 3 12 13 1.200013e+12 20693
## 4 12 13 1.200013e+12 44285
## 5 12 13 1.200013e+12 44285
## 6 12 13 1.200013e+12 44285
Se quisermos ler o arquivo, mas saltando o campo de município, devemos indicar o tamanho com sinal negativo.
ac<-read.fwf("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\AC\\AC\\Amostra_Pessoas_12.txt", widths = c(2,-5,13,8),col.names = c("V0001","V0011","V0300"))
head(ac)
## V0001 V0011 V0300
## 1 12 1.200013e+12 20683
## 2 12 1.200013e+12 20693
## 3 12 1.200013e+12 20693
## 4 12 1.200013e+12 44285
## 5 12 1.200013e+12 44285
## 6 12 1.200013e+12 44285
Para facilitar, vamos abrir todo o arquivo, utilizando a documentação
ac<-read.fwf("C:\\Users\\letho\\OneDrive\\PROJETO PROFESSOR\\UFJF\\NUDES\\TREINAMENTO R\\PRIMEIRO DIA\\DADOS\\AC\\AC\\Amostra_Pessoas_12.txt",
widths = c(2,5,13,8,16,1,2,3,2,1,2,2,1,3,3,2,1,1,1,1,1,1,1,1,1,1,4,1,7,7,3,3,1,7,7,7,1,7,7,7,1,1,2,2,1,1,2,1,1,1,
3,3,3,1,7,7,7,1,2,1,1,1,1,1,1,1,4,5,1,1,1,1,6,6,6,1,6,9,7,9,7,9,7,10,8,9,3,1,1,1,1,1,1,6,1,7,7,7,1,1,
1,2,2,2,1,2,2,2,1,3,1,1,1,2,4,1,2,2,2,2,1,2,1,1,1,1,1,3,1,2,2,2,8,9,4,5,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
col.names = c("V0001","V0002","V0011","V0300","V0010","V1001","V1002","V1003","V1004","V1006","V0502","V0504",
"V0601","V6033","V6036","V6037","V6040","V0606","V0613","V0614","V0615","V0616","V0617","V0618",
"V0619","V0620","V0621","V0622","V6222","V6224","V0623","V0624","V0625","V6252","V6254","V6256",
"V0626","V6262","V6264","V6266","V0627","V0628","V0629","V0630","V0631","V0632","V0633","V0634",
"V0635","V6400","V6352","V6354","V6356","V0636","V6362","V6364","V6366","V0637","V0638","V0639",
"V0640","V0641","V0642","V0643","V0644","V0645","V6461","V6471","V0648","V0649","V0650","V0651",
"V6511","V6513","V6514","V0652","V6521","V6524","V6525","V6526","V6527","V6528","V6529","V6530",
"V6531","V6532","V0653","V0654","V0655","V0656","V0657","V0658","V0659","V6591","V0660","V6602",
"V6604","V6606","V0661","V0662","V0663","V6631","V6632","V6633","V0664","V6641","V6642","V6643",
"V0665","V6660","V6664","V0667","V0668","V6681","V6682","V0669","V6691","V6692","V6693","V6800",
"V0670","V0671","V6900","V6910","V6920","V6930","V6940","V6121","V0604","V0605","V5020","V5060",
"V5070","V5080","V6462","V6472","V5110","V5120","V5030","V5040","V5090","V5100","V5130","M0502",
"M0601","M6033","M0606","M0613","M0614","M0615","M0616","M0617","M0618","M0619","M0620","M0621",
"M0622","M6222","M6224","M0623","M0624","M0625","M6252","M6254","M6256","M0626","M6262","M6264",
"M6266","M0627","M0628","M0629","M0630","M0631","M0632","M0633","M0634","M0635","M6352","M6354",
"M6356","M0636","M6362","M6364","M6366","M0637","M0638","M0639","M0640","M0641","M0642","M0643",
"M0644","M0645","M6461","M6471","M0648","M0649","M0650","M0651","M6511","M0652","M6521","M0653",
"M0654","M0655","M0656","M0657","M0658","M0659","M6591","M0660","M6602","M6604","M6606","M0661",
"M0662","M0663","M6631","M6632","M6633","M0664","M6641","M6642","M6643","M0665","M6660","M0667",
"M0668","M6681","M6682","M0669","M6691","M6692","M6693","M0670","M0671","M6800","M6121","M0604",
"M0605","M6462","M6472","V1005"))
ac$V0010<-ac$V0010/10000000000000
A partir dos dados disponíveis, podemos fazer algumas leituras rápidas. Vejamos aqui dois comandos fáceis de usar.
O comando table()
oferece a frequência de registros
segundo as categorias indicadas. Por exemplo, pode ser do nosso
interesse ver quantos homens e quantas mulheres existem no banco de
dados.
table(ac$V0601) # variável sexo. Vide documentação
##
## 1 2
## 47511 46164
Por outro lado, podemos ter o interesse de avaliar duas dimenões, como sexo e situação de domicílio (rural ou urbano).
table(ac$V0601,ac$V1006)
##
## 1 2
## 1 30888 16623
## 2 32048 14116
Se adicionarmos mais uma dimensão, o R irá fazer um split da tabela.
Contudo, sabemos que os microdados disponíveis do censo demográfico
são uma amostra e, por isso, deve ser ponderada para corresponder a
população total. A variável peso não consegue ser incluida no comando
table()
e, por isso, utilizaremos o comando
xtabs()
.
#Sem pesos
xtabs(~ ac$V0601 + ac$V1006) # veja que a sintaxe muda, com o sinal de "+" como o separador de argumentos ou dimensões.
## ac$V1006
## ac$V0601 1 2
## 1 30888 16623
## 2 32048 14116
#Com pesos
xtabs(ac$V0010 ~ ac$V0601 + ac$V1006) # veja que a sintaxe muda, com o sinal de "+" como o separador de argumentos ou dimensões.
## ac$V1006
## ac$V0601 1 2
## 1 259387 108937
## 2 272892 92343
A diferença entre os valores é que a primeira tabela cruzada são dados somente da amostra, ao passo que a segunda extrapola os valores para o tamanho do universo (população).
A variável “controle” presente do censo é ID de domicílio. Sabendo disso,seria possivel descobrir quantas pessoas (na população do Acre) vivem em cada tipo de espécie de domícilio?