help.start()
3 Maipulando os Dados
Uma Breve Introdução ao R
3.1 O R-project e as Boas Práticas
3.1.1 O software R
O R é uma linguagem e ambiente de desenvolvimento de Estatística e gráficos. É uma ferramenta poderosa, fornecendo ao seu usuário maior integração e qualidade gráfica e de análise. Alguns motivos para utilizar o R:
É Gratuito: é um projeto open-source. Pode ser utilizado em qualquer sistema operacional e tem aberto seus códigos e pactos para poder ser inspecionado.
R é uma Linguagem:Requer que seja escrito um script ao invés de clicar. A primeira vista uma característica negativa, entretanto, permite maior exploração, organização, memória da atividade, maior integração entre processos etc.
Gráficos e Visualizações: É sem sombra de dúvida o pacote estatístico com melhor e mais poderosa ferramenta de elaboração de gráficos e visualização.
Pacotes Estatísticos:Já possui muitas rotinas de análises já programadas nos diversos pacotes desenvolvidos, sendo muito bem documentados. Já possui muitas rotinas para regressão, regressão com séries temporais, regressão em painel, finanças, modelos de causalidade etc.
Fronteira do Conhecimento: Os principais desenvolvimentos teóricos em Econometria tem sua aplicação demonstrada e desenvolvida utilizando o R. Isso é valido para todas as subáreas do conhecimento em econometria, séries temporais, painel, finanças, etc.
Recursos de Ajuda: Há uma comunidade muito grande disponível para solucionar dúvidas e uma vasta documentação disponível para consulta na rede.
Conexão com Outros Pacotes: O R integra com outros pacotes que automatizam o nosso trabalho cotidiano. Pode se conectar com o Python, Java, SQL, Latex etc.
3.1.2 Utilizando Interface Gráfica - O Rstudio
Pode-se realizar seu script diretamente no console do R. Ele irá realizar um comando por vez. O R é uma interface leve e com poucos recursos gráficos.
Uma alternativa ao uso do R diretamente é o Rstudio, o qual é um editor de código ou um ambiente de desenvolvimento integrado. Ele possui quatro janelas, sendo a primeira a janela de script (superior esquerda) onde escrevemos os comandos em R.
A segunda janela é o console (inferior esquerda) similar ao que temos no R e onde os resultados são apresentados. Pode-se digitar comando diretamente no console do RStudio.
A terceira é a janela de ambiente e história (superior direita) ela armazena seus dados, valores e funções e a aba história possui a memoria dos comandos realizados.
Por fim a quarta janela (inferior direita) apresenta os pacotes, os gráficos, os arquivos gerados e ajuda. Essa janela facilita a instalação de pacotes, carregamento de bibliotecas, visualização de gráficos e o caminho dos arquivos.
3.1.3 Ajuda
Para abrir a ajuda geral o seguinte abaixo pode ser utilizado e abrirá uma janela no seu navegador.
Suponha que queiramos saber de uma função específica, assim pode-se utilizar o seguinte comando:
help(summary)
ou
?summary
Inclusive pode pedir um exemplo de como utilizar a função que está buscando
example(summary)
3.1.4 Boas Práticas
É fundamental que o usuário seja organizado. Forma é muito importante! Assim o usuário deve adotar padrões que auxiliem na organização do seu script ou programa.
Case Sensitivy: O R diferencia letras minúsculas e maiúscula. Ou seja, m é diferente de M. Por exemplo, considere as três formas de escrever a palavra idade.
idade ou Idade ou IDADE
Cada uma delas representa variáveis diferentes.
Sempre utilize as suas variáveis em minúsculo. Adote isso como regra geral.
Criando Bons Nomes: Vamos supor que queiramos criar uma variável que indique a idade que se formou na Universidade. Temos algumas opções:
- id: Ruim, pois não tem significado claro e pode confundir com a variável de identificação
- idade_formou_na_universidade: Ruim, pois o nome da variável é muito grande, difícil de escrever e de visualizar no banco de dados.
- idade_form: Bom nome, significativo, minúsculo e pequeno separa os dois nomes por underline
- idadeForm :Bom nome, significativo, minúsculo e pequeno separa os dois nomes por uma letra maiúscula.
Adote uma regra de criação para você e evite mudar. Crie nomes pequenos e significativos. Nunca inicie uma variável com número.
3.1.5 Criando projeto no R
Para saber em qual diretório o R está utilizando para salvar seu espaço de trabalho utilize o seguinte comando:
getwd()
No RStudio, sempre prefira a criação de um projeto para a organização de seus dados, com isso, ao mudar de máquina (ou estrutura de diretórios) seu código continuará funcionando normalmente.
-> New Project File
3.1.6 Identação é Importante
Identar é o recuo no texto em relação a margem. É importante que esse recuo exista para linhas do seu programa que são hierarquicamente conectadas. Vejamos dois exemplos com e sem identação:
Sem Identação
=c()
x1] = 3
x[for (i in 2:9) {
=2*x[i-1]
x[i] }
Note que a quarta linha desse programa está hierarquicamente conectada a linha 3 do “for”, ou seja, é uma continuação do comando e portanto deve ser identado para demonstrar essa relação de dependência. Vejamos
Com Identação
=c()
x1] = 3
x[for (i in 2:9) {
=2*x[i-1]
x[i] }
3.2 Inserindo Dados no R
3.2.1 Tipos de Variáveis
O R possui diversos tipos de variáveis. Alguns desses tipos são:
Vetores: Vamos inserir os dados denúmero de homicídios de mulheres nos diversos Estados brasileiros para o ano de 2022.No primeiro elemento teremos um erro, ao invés de 22 colocaremos 2.E não colocamos o valor do Distrito Federal e nem Tocantins
<- c(2, 73, 22, 88, 406, 264, 95, 137, 127, 101, 75, 309, 200, 86, 256, 219, 70, 283, 60, 281, 88, 33, 101, 423, 37)
homic homic
[1] 2 73 22 88 406 264 95 137 127 101 75 309 200 86 256 219 70 283 60
[20] 281 88 33 101 423 37
Podemos inserir vetores de texto, por exemplo, iremos inserir os estados brasileiros na mesma ordem do homicídio acima.
[1] "Acre" "Alagoas" "Amapá"
[4] "Amazonas" "Bahia" "Ceará"
[7] "Distrito Federal " "Espírito Santo" "Goiás"
[10] "Maranhão" "Mato Grosso" "Mato Grosso do Sul"
[13] "Minas Gerais" "Pará" "Paraíba"
[16] "Paraná" "Pernambuco" "Piauí"
[19] "Rio de Janeiro" "Rio Grande do Norte" "Rio Grande do Sul"
[22] "Rondônia" "Roraima" "Santa Catarina"
[25] "São Paulo" "Sergipe" "Tocantins"
Algumas manipulações importantes que podemos fazer com os vetores. Renomeando e removendo o vetor antigo:
Trocando o primeiro elemento do vetor e dando o print do novo resultado:
1]=22
homic_abs[ homic_abs
[1] 22 73 22 88 406 264 95 137 127 101 75 309 200 86 256 219 70 283 60
[20] 281 88 33 101 423 37
Algumas maneiras de pedir o print do vetor de homicídios femininos. Somente o estado 7, todos menos o estado 7, Estado de 1 até 7 etc:
7] homic_abs[
[1] 95
-7] homic_abs[
[1] 22 73 22 88 406 264 137 127 101 75 309 200 86 256 219 70 283 60 281
[20] 88 33 101 423 37
1:7] homic_abs[
[1] 22 73 22 88 406 264 95
Podemos incorporar novos dados no nosso vetor de homicídio feminino, Vamos incorporar o dado do Tocantins na posição 7 e o valor do Distrito Federal na útima posição - 27. Depois trocaremos os dois estados de posição:
#colcar exemplo de inserir no inicio
#inserir no meio e no final
<- c(homic_abs[1:6], 36,homic_abs[7:25], 32)
homic_abs homic_abs
[1] 22 73 22 88 406 264 36 95 137 127 101 75 309 200 86 256 219 70 283
[20] 60 281 88 33 101 423 37 32
#troca de posicoes
<- homic_abs[27]
temp 27] <- homic_abs[7]
homic_abs[7] <- temp
homic_abs[ homic_abs
[1] 22 73 22 88 406 264 32 95 137 127 101 75 309 200 86 256 219 70 283
[20] 60 281 88 33 101 423 37 36
String ou Texto:
String são as variáveis tipo texto. Esse tipo de variável já apareceu na seção anterior quando apresentamos um vetor com a classificação dos Estados. Vejamos mais uma vez. Podemos criar uma variável que contêm “estado homicidio”. Uma segunda maneira é criar um vetor com dois elementos “estado” e “homicidio”. O comando paste
cola a variável texto “estado” e a variável texto “homicidio”, separado por um espaço.
<- "estado homicidio"
a a
[1] "estado homicidio"
<- c("estado","homicidio")
b b
[1] "estado" "homicidio"
1] b[
[1] "estado"
paste(b[1],b[2],sep=' ')
[1] "estado homicidio"
Fator:
Fator são variáveis de classe. Fator armazenam os valores inteiros na forma de um vetor com as quantidades das k classes e o vetor string dos valores originais. Vejamos o exemplo de um vetor. Podemos análisar os homicídios por região geográfica do país. Assim, classificaremos os estados por região:
<- c("N", "NE", "N", "N", "NE", "NE", "CO", "SD", "CO", "NE", "CO", "CO", "SD", "N", "NE", "S", "NE", "NE", "SD", "NE", "S", "N", "N", "S", "SD", "NE", "N")
regiao summary(regiao)
Agora vamos transformar o vetor anterior em um fator
<- factor(regiao)
regiao summary(regiao)
CO N NE S SD
4 7 9 3 4
levels(regiao)
[1] "CO" "N" "NE" "S" "SD"
O comando levels
fornece as classes existentes, no caso acima temos 5, sendo elas 4, 7, 9, 3 e 4.
Fatores podem ser as características de raça, gênero, status familiar, status de saúde, qualidade do atendimento etc.
3.2.1.1 Data Frame ou Banco de Dados
Esse é um tipo mais geral de variável e consegue lidar na mesma estrutura com variaveis de tipos distintos como numérica, texto e fator. Um banco de dados similar aos outros programas estatísticos. Podemos criar essa variável de forma manual. Nosso banco de dados será composto por 4 variáveis, a primeira o estado, a segunda a região, a terceira o número de homicídios femininos e a quarta o número de feminicidios. As três primeiras já foram incluidas acima e vamos criar somente a quarta. O comando typeof
mostra qual o tipo de variável.
=c(11, 31, 8, 21, 107, 28, 19, 33, 56, 69, 47, 40, 171, 49, 26, 77, 72, 24, 111, 16, 110, 24, 3, 56, 195, 19, 14)
feminic_abstypeof(feminic_abs)
[1] "double"
Para criar o banco de dados utilizamos o seguinte comando:
<-data.frame(estados, regiao, homic_abs, feminic_abs) data_feminic22
Podemos modificar o nome das variáveis com o comando names
. Entretanto, tem que renomear todas
names(data_feminic22)<-c("estado", "regioa", "homic_abs", "feminic_abs")
data_feminic22
Ou podemos renomear somente algumas com o comando reshape
:
library(reshape)
<- rename(data_feminic22, c(estado="estados", regioa="regiao"))
data_feminic22 data_feminic22
estados regiao homic_abs feminic_abs
1 Acre N 22 11
2 Alagoas NE 73 31
3 Amapá N 22 8
4 Amazonas N 88 21
5 Bahia NE 406 107
6 Ceará NE 264 28
7 Distrito Federal CO 32 19
8 Espírito Santo SD 95 33
9 Goiás CO 137 56
10 Maranhão NE 127 69
11 Mato Grosso CO 101 47
12 Mato Grosso do Sul CO 75 40
13 Minas Gerais SD 309 171
14 Pará N 200 49
15 Paraíba NE 86 26
16 Paraná S 256 77
17 Pernambuco NE 219 72
18 Piauí NE 70 24
19 Rio de Janeiro SD 283 111
20 Rio Grande do Norte NE 60 16
21 Rio Grande do Sul S 281 110
22 Rondônia N 88 24
23 Roraima N 33 3
24 Santa Catarina S 101 56
25 São Paulo SD 423 195
26 Sergipe NE 37 19
27 Tocantins N 36 14
Podemos também listar variáveis do banco de dados, por exemplo, listar colunas de 1 a 2 ou listar por nome das variáveis, conforme apresentado abaixo:
data_feminic222:3]
data_feminic22[,1:2,2:3]
data_feminic22[c("regiao","feminic_abs")] data_feminic22[
Entretanto, inserir dados na mão pode ser uma tarefa muito penosa e existem soluções bem mais simples e rápidas para inserção de dados. Nas seções seguintes veremos aprenderemos mais funções úteis para lidar com banco de dados.
3.2.1.2 Trabalhando com as variáveis:
Vamos retomar duas variáveis homic_abs e estado e vamos manipular essas duas variáveis. Primeiramente vejamos o número de elementos, estrutura, classe e nome:
length(homic_abs)
[1] 27
str(homic_abs)
num [1:27] 22 73 22 88 406 264 32 95 137 127 ...
class(homic_abs)
[1] "numeric"
names(homic_abs)
NULL
Podemos combinar as duas variáveis de forma distintas, por exemplo combinar na forma de um vetor, combinar como coluna ou combinar como linha, vejamos a diferença:
#Precisa mudar essa parte de posição está confuso pois falamos de dataframe e aqui de vetor
<- c(homic_abs,estados)
comb1 <- cbind(homic_abs,estados)
comb2<-rbind(homic_abs,estados)
comb3 <- data.frame(
comb4
homic_abs,
estadosstringsAsFactors = F)
,
comb1
comb2
comb3 comb4
Vejamos quais objetos temos e vamos pedir para visualizar os objetos que acabamos de criar. Por fim removeremos o vetor comb1.
ls()
comb1
comb2
comb3rm(comb1)
3.2.2 Importando os Dados
Disponibilizamos dois banco de dados, um contendo os homicídios e feminicídios por estado e outro com as tentativas. Esses arquivos estão em formato csv (comma separated values).
Para leitura desse arquivo em csv o seguinte comando é necessário read.csv
, indicado que possui cabeçalho e que o separador é “;”
<-read.csv("C:/Users/Alexandre_Nicolella/Aulas/FEA-RP/Jurimetria/dados_feminic.csv", head=TRUE,sep=";")
df_feminic22
<-read.csv("C:/Users/Alexandre_Nicolella/Aulas/FEA-RP/Jurimetria/dados_tent_feminic.csv", head=TRUE,sep=";") df_t_feminic22
Para leitura de arquivos em Stata terá que utilizar o pacote foreign
, conforme exemplo abaixo:
library(foreign)
<- read.dta("~/feminic.dta") stata_feminic
Além desses, o R é capaz de trabalhar com SQL, SAS, SPSS, Excel entre outros.
O R usa o formato americano de separação numérica. Usa ponto ao invés da vírgula para separar a unidade dos decimais. No Brasil usamos a vírgula. Isso sempre gera conflito. No seu csv evite usar acentos nas palavras e use ponto como separados dos decimais e não use separador dos milhares. Exemplo: 12500.97
3.2.3 Exportanto os Dados
Podemos exportar os dados em diferentes formatos. Alguns exemplos são csv, texto delimitado, excel, stata. Vejamos em csv:
write.table(df_feminic22, "C:/Users/Alexandre_Nicolella/Aulas/FEA-RP/Jurimetria/export_feminic.csv", sep=";")
Para exportar em Stata utilize os seguintes comandos:
library(foreign)
write.dta(df_feminic22, paste(getwd(),"~/Banco de dados/export_feminic.dta",sep=''))
3.2.4 Lidando com Dados Missing
Não temos informação para as tentativas de feminicidio para os estados de São Paulo e Mato Grosso. Uma maneira de lidar com valores missing seria fazer um subconjunto que veremos mais a frente. Agora seguiremos alguns passos para analisar os valores missing do nosso banco de dados.
Primeiramente, analisamos se há valores missing no banco de dados:
is.na(df_t_feminic22)
Podemos desconsiderar os valores missing da análise de interesse, vamos fazer a média do dolar sem considerar os valores missing:
mean(df_t_feminic22$t_feminic_abs)
[1] NA
mean(df_t_feminic22$t_feminic_abs, na.rm=TRUE)
[1] 102.52
Podemos criar um novo banco de dados sem os valores missing.
<- na.omit(df_t_feminic22)
df_t_feminic22_sem_missing mean(df_t_feminic22_sem_missing$t_feminic_abs)
[1] 102.52
rm(df_t_feminic22_sem_missing)
Outra maneira de excluir os valores missing seria a utilização do comando subset
removendo as observações que contenham valor missing. Isso será explicado em seção a frente.
Pode-se também recodificar uma determinada variável para missing. Muito comum nas pesquisas do IBGE os valores missing serem identificados por um número, por exemplo 999999999999. Dessa forma podemos indicar que esse não é número e sim um valor missing da seguinte maneira:
$t_feminic_abs[df_t_feminic22$t_feminic_abs==999999] <- NA df_t_feminic22
Todos os valores que forem 99 serão exluídos e a celula ficará com um NA
Doois pontos importantes, dados missing não é 0 e nunca devem ser substituídos por 0. Pois 0 é um valor e missing é que não sabemos. Outro ponto é que devemos evitar excluir do banco os dados missing, melhor é fazer as contas retirando apensa do cálculo
3.3 Operando o Banco de Dados
3.3.1 Criando uma Nova Variável
Vamos criar uma variável que seria a soma dos homicídios e feminicídios no estado. Para criar a variável precisamos dizer primeiro qual o banco de dados em que queremos criar e qual o nome da variável, conforme apresentado na expressão abaixo.
library(reshape)
<- rename(df_feminic22, c(feminico_abs="feminic_abs"))
df_feminic22
$t_total_abs<- df_t_feminic22$t_feminic_abs + df_t_feminic22$t_homic_abs
df_t_feminic22
$total_abs<- df_feminic22$feminic_abs + df_feminic22$homic_abs df_feminic22
Agora vamos criar uma variável binária que representa como 1 os estados que possuem a taxa de feminicídio em relação ao total de homicídios maior que 50%. Novamente, precisamos indicar o banco de dados e o nome da variável no banco de dados.
$mais_50[df_feminic22$part_feminic < 50] <- 0
df_feminic22$mais_50[df_feminic22$part_feminic >= 50] <- 1
df_feminic22
$mais_50 df_feminic22
[1] 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0
3.3.2 Operadores Aritméticos e Lógicos
Utilizando os vetores criados anteriormente:
>50 feminic_abs
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
[13] TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE
[25] TRUE FALSE FALSE
>50] feminic_abs[feminic_abs
[1] 107 56 69 171 77 72 111 110 56 195
< 50 | feminic_abs > 100] feminic_abs[feminic_abs
[1] 11 31 8 21 107 28 19 33 47 40 171 49 26 24 111 16 110 24 3
[20] 195 19 14
> 50 & feminic_abs < 100] feminic_abs[feminic_abs
[1] 56 69 77 72 56
mean(feminic_abs)
[1] 53.22222
<- (feminic_abs[feminic_abs< 100 & feminic_abs > 50])
feminic_M feminic_M
[1] 56 69 77 72 56
A tabela abaixo contém alguns operadaroes lógicos frequentemente utilizados.
Operador | Significado |
---|---|
< | Menor que |
<= | Menor igual |
> | Maior que |
>= | Maior igual |
== | Exatamente igual |
!= | Diferente |
!x | Não x |
x | y | x OU y |
x & y | x E y |
3.4 Algumas Funções Importantes
3.4.1 Ordenando os Dados
Vamos ordenar os estados dos nossos 2 data frames pela participação do feminicídio no total de homicídios de mulheres.
<-df_feminic22[order(df_feminic22$part_feminic, decreasing = TRUE),]
df_feminic22_ord
<-df_t_feminic22[order(df_t_feminic22$part_t_feminic, decreasing = TRUE),] df_t_feminic22_ord
3.4.2 Fazendo Merge
Temos dois data frames um contendo homicídios e feminicídios e outro contendo as tentativas. Vamos agora juntar os dois. Para isso os bancos devem conter uma chave única que identifica cada linha e essa deve estar presente nos dois bancos. Inclusive devem ter o mesmo nome.No caso em questão podemos usar o estado como nossa chave que irá conectar os dois bancos.
<- merge(df_feminic22,df_t_feminic22,by="sigla",keep.all=TRUE) df_final_feminic_22
Agora temos um banco único com homicídios e tentativas de homicídios.
3.4.3 Agregando
Vamos criar um banco de dados que contenha os valores médios das variáveis. Para isso vamos agregar fazendo a média por região. Poderíamos utilizar outra função, como a soma, para fazer a agregação:
<-aggregate(df_final_feminic_22, by=list(df_final_feminic_22$regiao.x), FUN=mean, na.rm=TRUE)
regiao_media regiao_media
Group.1 sigla estado.x regiao.x homic_abs homic_tx feminic_abs feminic_tx
1 CO NA NA NA 86.25000 4.250000 40.50000 2.100000
2 N NA NA NA 69.85714 6.785714 18.57143 1.871429
3 NE NA NA NA 149.11111 4.355556 43.55556 1.422222
4 S NA NA NA 212.66667 4.000000 81.00000 1.600000
5 SD NA NA NA 277.50000 3.300000 127.50000 1.375000
part_feminic rendapc total_abs mais_50 estado.y regiao.y t_homic_abs
1 50.02500 2011.250 126.75000 0.5000000 NA NA 258.2500
2 30.01429 1175.286 88.42857 0.1428571 NA NA 161.7143
3 34.36667 1053.222 192.66667 0.2222222 NA NA 257.7778
4 41.53333 1983.667 293.66667 0.3333333 NA NA 450.6667
5 43.82500 1842.750 405.00000 0.2500000 NA NA 455.7500
t_homic_tx t_feminic_abs t_feminic_tx part_t_feminic t_total_abs
1 13.375000 126.33333 6.500000 32.67667 387.6667
2 24.657143 50.28571 5.285714 26.44286 212.0000
3 9.311111 85.11111 3.044444 25.72444 342.8889
4 8.966667 169.66667 3.500000 25.98667 620.3333
5 8.875000 185.66667 3.000000 26.50000 660.3333
3.4.4 Criando Subconjunto
Selecionando Variáveis:
Podemos estar interessado em manter somente algumas variáveis no nosso banco de dados, por exemplo, queremos manter estado e a participação do feminicídio no total. Assim:
<- c("sigla", "part_feminic", "part_t_feminic")
var_sel <- df_final_feminic_22[var_sel]
feminic_sel
<- df_final_feminic_22[c("sigla", "part_feminic", "part_t_feminic")] feminic_sel1
Ou podemos fazer indicar as colunas que queremos selecionar. Na segunda opção selecionamos até o final do nosso banco
<- df_final_feminic_22[c(1:3,5:6,12:15)]
feminic_sel2 <- df_final_feminic_22[c(1:3,10:ncol(df_final_feminic_22))] feminic_sel3
:
Ao fazer o merge as variáveis que tinham o mesmo nome nos dois bancos, como estado, foram mantidas e agora possuem os nomes estado.x e estado.y, vamos manter apenas uma e trocar o seu nome. O comando names
ajuda a saber a posição da variável no banco
names(df_final_feminic_22)
[1] "sigla" "estado.x" "regiao.x" "homic_abs"
[5] "homic_tx" "feminic_abs" "feminic_tx" "part_feminic"
[9] "rendapc" "total_abs" "mais_50" "estado.y"
[13] "regiao.y" "t_homic_abs" "t_homic_tx" "t_feminic_abs"
[17] "t_feminic_tx" "part_t_feminic" "t_total_abs"
<- df_final_feminic_22[c(-12)]
final_fem_22
library(reshape)
<- rename(final_fem_22, c(estado.x="estados")) final_fem_22
Se fizermos o comando de tirar colunas no mesmo data frame, ao rodar novamente ele continuará sempre tirando a coluna indicada. O ideal seria construir outro data frame como fizemos acima.
Ou podemos especificar a o nome da coluna que será retirada. Vamos agora tirar a região que ficou duplicada
$regiao.y <- NULL
final_fem_22
library(reshape)
<- rename(final_fem_22, c(regiao.x="regiao"))
final_fem_22
save(final_fem_22, file = "dados.RData")
write.table(final_fem_22, "C:/Users/Alexandre_Nicolella/Aulas/FEA-RP/Jurimetria/jurimetria/final_fem_22.csv", sep=";")
Selecionando Variáveis:
Vamos selecionar as observações dos estados da região Norte e Nordeste:
<- final_fem_22[ which(final_fem_22$regiao=="NE" | final_fem_22$regiao=="N"),]
fem_n_nd
<- final_fem_22[ which((final_fem_22$regiao=="NE" | final_fem_22$regiao=="N") & final_fem_22$part_feminic>=50),] fem_n_nd1
Ou podemos selecionar as observações em que a participação do feminicídio está entre 30 e 50%:
<- subset(final_fem_22, final_fem_22$part_feminic >= 30 & final_fem_22$part_feminic <= 50 ) fem_n_nd2