PROF. GUILHERME AUGUSTO VELOSO
PRIMEIRO SEMESTRE DE 2023
Um passo importante na tarefa de importação
de dados para o R é saber onde está o arquivo que
queremos importar. Toda função de importação vai
exigir um caminho que representa o endereço do arquivo
no computador.
O diretório de trabalho (working directory) nada
mais é do que a pasta em que o R vai procurar
arquivos na hora de ler informações ou gravar arquivos na hora
de salvar objetos.
Se você não souber qual é o seu diretório de trabalho, você pode descobri-lo usando a seguinte função:
# Descobrindo o diretório atual
getwd()
Essa função vai devolver o caminho do seu diretório de trabalho.
A função setwd() pode ser utilizada para mudar o
diretório de trabalho. Como argumento, ela recebe o
caminho para o novo diretório:
setwd("Endereço-do-diretório")
Outra maneira de estabelecer o diretório de trabalho
é ir em Session - Set Working Directory e
então escolha dentre suas pastas o diretório de trabalho
desejado.
Utilizaremos, como exemplo, os dados coletados por alunas do curso de pós-graduação em nutrição da UFF com informações sobre 2210 pessoas que responderam um questionário online no ano de 2022. O estudo tem por objetivo avaliar a alteração alimentar dos respondentes com respeito à pandemia. As variáveis coletadas foram:
Os arquivos estão com os nomes
Dados.txt, Dados.xlsx e
Dados.csv. Coloque os arquivos em seu diretório de
preferência.
Nesse curso, exemplificaremos a importação de bases de dados em
três formatos muito comuns: .txt,
.xlsx e csv. Importante ressaltar que
existem muitos outros formatos de dados e, pra cada
estrutura, o R terá uma função própria para sua
importação.
.txtTXT é uma abreviação para Arquivo de Texto. Os arquivos TXT são usados para armazenar dados de texto simples não formatados. Documentos de texto simples salvos no formato TXT podem ser criados, abertos e editados utilizando uma grande variedade de programas de processamento de texto e edição de texto desenvolvidos para sistemas Linux, Microsoft computadores e plataformas Mac baseados em Windows.
.xlsx ou .xlsO arquivo do Microsoft Excel que possui a extensão .XLSX ou .XLS é uma planilha. Sendo assim, seu conteúdo pode ser o mais variado possível. De seu controle de estoque até o sistema de ponto eletrônico de sua empresa. Ainda dentro desses arquivos é possível criar outras planilhas, que podem ser relacionadas ou não.
Essa planilha é constituída de linhas e colunas, o encontro delas é chamado de célula, nessa célula é onde as informações são escritas. Por isso, elas podem ser formatadas e transformadas conforme sua necessidade.
.csvPor definição, CSV é um formato de arquivo que significa “comma-separated-values” (valores separados por vírgulas). Isso significa que os campos de dados indicados neste formato normalmente são separados ou delimitados por uma vírgula.
A grande vantagem de um arquivo CSV é o fato de ele possibilitar a importação e exportação arquivos de uma linguagem que vários aplicativos podem ler.
Muitas vezes, quando você vai fazer uma importação de dados em algum sistema, você vai notar que de cara ele pede um arquivo em formato CSV.
readrO pacote readr faz parte do grande leque de
pacotes do tidyverse e é responsável por auxiliar
na leitura de arquivos .txt e
.csv.
O readr transforma arquivos de textos em
tibbles. No tidyverse,
tibbles é a unidade fundamental de
armazenamento de dados retangulares. Dentre as funções do
pacote, temos:
read_csv(): para arquivos separados por
vírgula.
read_delim(): para arquivos separados por um
delimitador genérico. O argumento delim= indica qual caractere separa
cada coluna no arquivo de texto.
read_table(): para arquivos de texto tabular com
colunas separadas por espaço.
.txtPara ler arquivos .txt com o pacore
readr, utilizaremos a função
read_delim(), especificando o delimitador
para TAB. A seguir, seguem os comandos para a leitura dos dados
da alteração nutricional durante a pandemia:
# Carregando o universo tidyverse
library("tidyverse")
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.0 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.1 ✔ tibble 3.1.8
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
# Carregando a biblioteca readr
library("readr")
# Lendo a base de dados no formato .txt com delimitador tab
dadostxt = read_delim(file = "Dados.txt", delim = "\t")
## Rows: 2210 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "\t"
## chr (5): Genero, Regiao, Isolamento, Renda_familiar, Alteracao_Pandemia
## dbl (3): Idade, Peso, Altura
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
dadostxt
## # A tibble: 2,210 × 8
## Genero Idade Regiao Isolamento Renda_familiar Alter…¹ Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Masculino 38 Sul Não entre R$ 1.255 … Não 99 1.7
## 2 Masculino 28 Sudeste Sim mais de R$ 8.640 Sim 95.6 1.95
## 3 Feminino 24 Sudeste Não até R$ 1254,00 Sim 91 1.71
## 4 Feminino 26 Norte Não até R$ 1254,00 Sim 90.5 1.68
## 5 Feminino 56 Sudeste Não entre R$ 1.255 … Não 87.8 1.68
## 6 Masculino 22 Centro-oeste Não entre R$ 1.255 … Não 86.2 1.85
## 7 Feminino 43 Centro-oeste Sim entre R$ 1.255 … Não 85 1.67
## 8 Feminino 69 Sudeste Sim entre R$ 1.255 … Não 83.2 1.7
## 9 Feminino 34 Norte Não entre R$ 1.255 … Sim 80.9 1.59
## 10 Feminino 29 Centro-oeste Sim entre R$ 1.255 … Sim 80.6 1.68
## # … with 2,200 more rows, and abbreviated variable name ¹Alteracao_Pandemia
.csvPara ler arquivos .csv com o pacore
readr, utilizaremos a função
read_csv(). A seguir, seguem os comandos para a
leitura dos dados de alteração nutricional durante a pandemia:
# Lendo a base de dados no formato .csv
dadoscsv = read_csv(file = "Dados.csv")
## Rows: 2210 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): Genero, Regiao, Isolamento, Renda_familiar, Alteracao_Pandemia
## dbl (3): Idade, Peso, Altura
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
dadoscsv
## # A tibble: 2,210 × 8
## Genero Idade Regiao Isolamento Renda_familiar Alter…¹ Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Masculino 38 Sul Não entre R$ 1.255 … Não 99 1.7
## 2 Masculino 28 Sudeste Sim mais de R$ 8.640 Sim 95.6 1.95
## 3 Feminino 24 Sudeste Não até R$ 1254,00 Sim 91 1.71
## 4 Feminino 26 Norte Não até R$ 1254,00 Sim 90.5 1.68
## 5 Feminino 56 Sudeste Não entre R$ 1.255 … Não 87.8 1.68
## 6 Masculino 22 Centro-oeste Não entre R$ 1.255 … Não 86.2 1.85
## 7 Feminino 43 Centro-oeste Sim entre R$ 1.255 … Não 85 1.67
## 8 Feminino 69 Sudeste Sim entre R$ 1.255 … Não 83.2 1.7
## 9 Feminino 34 Norte Não entre R$ 1.255 … Sim 80.9 1.59
## 10 Feminino 29 Centro-oeste Sim entre R$ 1.255 … Sim 80.6 1.68
## # … with 2,200 more rows, and abbreviated variable name ¹Alteracao_Pandemia
readxlO pacote readxl permite a leitura de arquivos
.xlsx ou .xls.
.xlsx ou .xlsPara ler planilhas do Excel (arquivos .xlsx ou .xls), basta
utilizarmos a função read_xlsx() do pacote
readxl. A seguir, seguem os comandos para a
leitura dos dados de alteração nutricional durante a pandemia:
# Carregando a biblioteca readxl
library("readxl")
# Lendo a base de dados no formato .xlsx
dadosxlsx = read_xlsx(path = "Dados.xlsx")
dadosxlsx
## # A tibble: 2,210 × 8
## Genero Idade Regiao Isolamento Renda_familiar Alter…¹ Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Masculino 38 Sul Não entre R$ 1.255 … Não 99 1.7
## 2 Masculino 28 Sudeste Sim mais de R$ 8.640 Sim 95.6 1.95
## 3 Feminino 24 Sudeste Não até R$ 1254,00 Sim 91 1.71
## 4 Feminino 26 Norte Não até R$ 1254,00 Sim 90.5 1.68
## 5 Feminino 56 Sudeste Não entre R$ 1.255 … Não 87.8 1.68
## 6 Masculino 22 Centro-oeste Não entre R$ 1.255 … Não 86.2 1.85
## 7 Feminino 43 Centro-oeste Sim entre R$ 1.255 … Não 85 1.67
## 8 Feminino 69 Sudeste Sim entre R$ 1.255 … Não 83.2 1.7
## 9 Feminino 34 Norte Não entre R$ 1.255 … Sim 80.9 1.59
## 10 Feminino 29 Centro-oeste Sim entre R$ 1.255 … Sim 80.6 1.68
## # … with 2,200 more rows, and abbreviated variable name ¹Alteracao_Pandemia
Por padrão, as funções de leitura trarão apenas a primeira
planilha do arquivo. Para trazer outra planilha, basta
utilizarmos o argumento sheet.
A maioria das funções de leitura do readr e
readxl possuem argumentos muito úteis para resolver
problemas de importação:
col_names=: indica se a primeira linha da base
contém ou não o nome das colunas. Também pode ser utilizado para
(re)nomear colunas.
col_types=: caso alguma coluna seja importada com a
classe errada (uma coluna de números foi importada como texto, por
exemplo), você pode usar esse argumento para especificar a classe das
colunas.
locale=: útil para tratar problema de
encoding.
skip=: pula linhas no começo do arquivo antes de
iniciar a importação. Útil para quando o arquivo a ser importado vem com
metadados ou qualquer tipo de texto nas primeiras linhas, antes da
base.
na=: indica quais caracteres deverão ser
considerados NA na hora da importação.
Para a maioria das funções read_, existe uma respectiva função write_. Essas funções servem para salvar bases em um formato específico de arquivo. Além do caminho/nome do arquivo a ser criado, você também precisa passar o objeto que será escrito. Para o arquivo criado funcionar corretamente, você precisa especificar a extensão correta no nome do arquivo. Por exemplo,
write_csv(x = nome-do-objeto, path = "nome-do-arquivo.csv")
Para ler arquivos gerados por outros softwares, como
SPSS, SAS e STATA, você pode usar as funções do pacote
haven. Este pacote faz parte do
tidyverse.
%>%O operador %>% (pipe) foi uma das grandes
revoluções recentes do R, tornando a
escrita e leitura de códigos mais intuitiva e
compreensível. Ele foi introduzido por Stefan Milton Bache no
pacote magrittr.
A ideia do operador %>% (pipe) é bem simples: usar o valor resultante da expressão do lado esquerdo como primeiro argumento da função do lado direito.
Vejamos um exemplo:
x = c(1, 2, 3, 4)
# Vamos calcular a raiz quadrada da soma dos valores de 1 a 4. Primeiro, sem o pipe.
sqrt(sum(x))
## [1] 3.162278
# Agora com o pipe.
x %>% sum() %>% sqrt()
## [1] 3.162278
O caminho que o código x %>% sum %>% sqrt seguiu
foi enviar o objeto x como argumento da função sum() e, em
seguida, enviar a saida da expressão sum(x) como argumento
da função sqrt(). Observe que escrevemos o código
na mesma ordem em que as operações são realizadas. A utilização
de parênteses após o nome das funções não é necessário, mas
recomendável.
Para que seja feita a sequência de manipulações nas bases de dados, utilizaremos o pipe para organizar as operações.
Esta seção trata do tema manipulação de dados. Trata-se de uma tarefa dolorosa e demorada, tomando muitas vezes a maior parte do tempo de uma análise de dados. Essa etapa é essencial para o sucesso da análise.
Usualmente, os estatísticos e analistas de dados partem de uma base “crua” e a transformam até obter uma base de dados analítica, que, a menos de transformações simples, está preparada para gerar tabelas e gráficos e aplicação de modelos.
É importante lembrar que
dplyrO dplyr é o pacote mais útil para realizar
transformação de dados, aliando simplicidade e eficiência de
uma forma elegante. Os scripts em R que
fazem uso inteligentes dos verbos dplyr e as facilidades do
operador pipe tendem a ficar mais legíveis e organizados, sem
perder velocidade de execução.
Para exemplificar, utilizaremos a base de dados em formato
.csv. Dessa forma,
library("dplyr")
library("readr")
# Chamando de dados a base dadoscsv
dados = read_csv(file = "Dados.csv")
## Rows: 2210 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): Genero, Regiao, Isolamento, Renda_familiar, Alteracao_Pandemia
## dbl (3): Idade, Peso, Altura
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Nas próximas seções, veremos alguns exemplos de funções do
dplyr. Ao longo do curso, mais funções desse
pacote serão exploradas.
renameEsta função renomeia nomes de colunas (variáveis)**
# Obtendo o nome das colunas
colnames(dados)
## [1] "Genero" "Idade" "Regiao"
## [4] "Isolamento" "Renda_familiar" "Alteracao_Pandemia"
## [7] "Peso" "Altura"
# Alterando o nome da variável Isolamento para Isolamento_Social
dados = dados %>% rename(Isolamento_Social=Isolamento)
dados
## # A tibble: 2,210 × 8
## Genero Idade Regiao Isolamento_Social Renda_f…¹ Alter…² Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Masculino 38 Sul Não entre R$… Não 99 1.7
## 2 Masculino 28 Sudeste Sim mais de … Sim 95.6 1.95
## 3 Feminino 24 Sudeste Não até R$ 1… Sim 91 1.71
## 4 Feminino 26 Norte Não até R$ 1… Sim 90.5 1.68
## 5 Feminino 56 Sudeste Não entre R$… Não 87.8 1.68
## 6 Masculino 22 Centro-oeste Não entre R$… Não 86.2 1.85
## 7 Feminino 43 Centro-oeste Sim entre R$… Não 85 1.67
## 8 Feminino 69 Sudeste Sim entre R$… Não 83.2 1.7
## 9 Feminino 34 Norte Não entre R$… Sim 80.9 1.59
## 10 Feminino 29 Centro-oeste Sim entre R$… Sim 80.6 1.68
## # … with 2,200 more rows, and abbreviated variable names ¹Renda_familiar,
## # ²Alteracao_Pandemia
selectEsta função seleciona colunas (variáveis).
É possível fazer essa seleção utilizando nomes, índices,
intervalos de variáveis ou utilizar as funções
starts_with(x), ends_with(x),
contains(x), matches(x),
one_of(x) para selecionar as variáveis.
# Selecionando as variáveis Genero, Idade e Alteração_Pandemia
sub_dados = dados %>% select(Genero,Idade,Alteracao_Pandemia)
sub_dados
## # A tibble: 2,210 × 3
## Genero Idade Alteracao_Pandemia
## <chr> <dbl> <chr>
## 1 Masculino 38 Não
## 2 Masculino 28 Sim
## 3 Feminino 24 Sim
## 4 Feminino 26 Sim
## 5 Feminino 56 Não
## 6 Masculino 22 Não
## 7 Feminino 43 Não
## 8 Feminino 69 Não
## 9 Feminino 34 Sim
## 10 Feminino 29 Sim
## # … with 2,200 more rows
# Selecionando as variáveis a partir de Genero até Alteracao_Pandemia
sub_dados = dados %>% select(Genero:Alteracao_Pandemia)
sub_dados
## # A tibble: 2,210 × 6
## Genero Idade Regiao Isolamento_Social Renda_familiar Alter…¹
## <chr> <dbl> <chr> <chr> <chr> <chr>
## 1 Masculino 38 Sul Não entre R$ 1.255 - R$ 8… Não
## 2 Masculino 28 Sudeste Sim mais de R$ 8.640 Sim
## 3 Feminino 24 Sudeste Não até R$ 1254,00 Sim
## 4 Feminino 26 Norte Não até R$ 1254,00 Sim
## 5 Feminino 56 Sudeste Não entre R$ 1.255 - R$ 8… Não
## 6 Masculino 22 Centro-oeste Não entre R$ 1.255 - R$ 8… Não
## 7 Feminino 43 Centro-oeste Sim entre R$ 1.255 - R$ 8… Não
## 8 Feminino 69 Sudeste Sim entre R$ 1.255 - R$ 8… Não
## 9 Feminino 34 Norte Não entre R$ 1.255 - R$ 8… Sim
## 10 Feminino 29 Centro-oeste Sim entre R$ 1.255 - R$ 8… Sim
## # … with 2,200 more rows, and abbreviated variable name ¹Alteracao_Pandemia
# Selecionando todas as variáveis exceto Idade
sub_dados = dados %>% select(-Idade)
sub_dados
## # A tibble: 2,210 × 7
## Genero Regiao Isolamento_Social Renda_familiar Alter…¹ Peso Altura
## <chr> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Masculino Sul Não entre R$ 1.255… Não 99 1.7
## 2 Masculino Sudeste Sim mais de R$ 8.6… Sim 95.6 1.95
## 3 Feminino Sudeste Não até R$ 1254,00 Sim 91 1.71
## 4 Feminino Norte Não até R$ 1254,00 Sim 90.5 1.68
## 5 Feminino Sudeste Não entre R$ 1.255… Não 87.8 1.68
## 6 Masculino Centro-oeste Não entre R$ 1.255… Não 86.2 1.85
## 7 Feminino Centro-oeste Sim entre R$ 1.255… Não 85 1.67
## 8 Feminino Sudeste Sim entre R$ 1.255… Não 83.2 1.7
## 9 Feminino Norte Não entre R$ 1.255… Sim 80.9 1.59
## 10 Feminino Centro-oeste Sim entre R$ 1.255… Sim 80.6 1.68
## # … with 2,200 more rows, and abbreviated variable name ¹Alteracao_Pandemia
# Selecionando as variáveis que começam com I
sub_dados = dados %>% select(starts_with("I"))
sub_dados
## # A tibble: 2,210 × 2
## Idade Isolamento_Social
## <dbl> <chr>
## 1 38 Não
## 2 28 Sim
## 3 24 Não
## 4 26 Não
## 5 56 Não
## 6 22 Não
## 7 43 Sim
## 8 69 Sim
## 9 34 Não
## 10 29 Sim
## # … with 2,200 more rows
filterDiferentemente da função select que filtra colunas,
a função filter serve para filtrar
linhas.
# Filtrando a região Norte
sub_dados = dados %>% filter(Regiao == "Norte")
sub_dados
## # A tibble: 316 × 8
## Genero Idade Regiao Isolamento_Social Renda_familiar Alter…¹ Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Feminino 26 Norte Não até R$ 1254,00 Sim 90.5 1.68
## 2 Feminino 34 Norte Não entre R$ 1.255… Sim 80.9 1.59
## 3 Feminino 32 Norte Sim entre R$ 1.255… Sim 72.3 1.6
## 4 Feminino 22 Norte Sim até R$ 1254,00 Sim 57.4 1.59
## 5 Feminino 47 Norte Não mais de R$ 8.6… Não 51.2 1.57
## 6 Masculino 23 Norte Não entre R$ 1.255… Não 50.5 1.64
## 7 Feminino 22 Norte Sim até R$ 1254,00 Sim 50 1.54
## 8 Feminino 22 Norte Sim até R$ 1254,00 Não 50 1.4
## 9 Masculino 44 Norte Não mais de R$ 8.6… Sim 136. 1.77
## 10 Masculino 39 Norte Sim entre R$ 1.255… Sim 135 1.77
## # … with 306 more rows, and abbreviated variable name ¹Alteracao_Pandemia
# Filtrando a idade > 40
sub_dados = dados %>% filter(Idade > 40)
sub_dados
## # A tibble: 648 × 8
## Genero Idade Regiao Isolamento_Social Renda_f…¹ Alter…² Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Feminino 56 Sudeste Não entre R$… Não 87.8 1.68
## 2 Feminino 43 Centro-oeste Sim entre R$… Não 85 1.67
## 3 Feminino 69 Sudeste Sim entre R$… Não 83.2 1.7
## 4 Feminino 63 Sudeste Não mais de … Sim 80 1.6
## 5 Feminino 48 Sudeste Sim entre R$… Sim 75.5 1.61
## 6 Feminino 51 Nordeste Sim entre R$… Sim 68 1.63
## 7 Feminino 73 Centro-oeste Sim entre R$… Não 67.4 1.58
## 8 Feminino 56 Sudeste Sim entre R$… Sim 63.9 1.62
## 9 Feminino 47 Norte Não mais de … Não 51.2 1.57
## 10 Masculino 44 Norte Não mais de … Sim 136. 1.77
## # … with 638 more rows, and abbreviated variable names ¹Renda_familiar,
## # ²Alteracao_Pandemia
# Excluindo pessoas do gênero masculino
subdados = dados %>% filter(Genero != "Masculino")
subdados
## # A tibble: 1,644 × 8
## Genero Idade Regiao Isolamento_Social Renda_fa…¹ Alter…² Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Feminino 24 Sudeste Não até R$ 12… Sim 91 1.71
## 2 Feminino 26 Norte Não até R$ 12… Sim 90.5 1.68
## 3 Feminino 56 Sudeste Não entre R$ … Não 87.8 1.68
## 4 Feminino 43 Centro-oeste Sim entre R$ … Não 85 1.67
## 5 Feminino 69 Sudeste Sim entre R$ … Não 83.2 1.7
## 6 Feminino 34 Norte Não entre R$ … Sim 80.9 1.59
## 7 Feminino 29 Centro-oeste Sim entre R$ … Sim 80.6 1.68
## 8 Feminino 63 Sudeste Não mais de R… Sim 80 1.6
## 9 Feminino 30 Centro-oeste Não entre R$ … Sim 79.8 1.69
## 10 Feminino 30 Sudeste Sim entre R$ … Sim 79.8 1.6
## # … with 1,634 more rows, and abbreviated variable names ¹Renda_familiar,
## # ²Alteracao_Pandemia
# Filtrando pessoas da região norte e com idade > 40
# Observação: quando se trata de vetores utiliza-se o & para "e" e o | para "ou"
sub_dados = dados %>% filter(Regiao == "Norte" & Idade > 40)
sub_dados
## # A tibble: 105 × 8
## Genero Idade Regiao Isolamento_Social Renda_familiar Alter…¹ Peso Altura
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Feminino 47 Norte Não mais de R$ 8.6… Não 51.2 1.57
## 2 Masculino 44 Norte Não mais de R$ 8.6… Sim 136. 1.77
## 3 Masculino 55 Norte Não mais de R$ 8.6… Não 120 1.87
## 4 Masculino 46 Norte Sim entre R$ 1.255… Sim 105 1.75
## 5 Feminino 54 Norte Sim mais de R$ 8.6… Sim 104 1.66
## 6 Masculino 62 Norte Sim mais de R$ 8.6… Sim 103 1.75
## 7 Masculino 49 Norte Não mais de R$ 8.6… Sim 100 1.7
## 8 Feminino 55 Norte Sim mais de R$ 8.6… Não 100 1.76
## 9 Masculino 43 Norte Não mais de R$ 8.6… Sim 98.8 1.82
## 10 Masculino 41 Norte Sim entre R$ 1.255… Sim 98 1.75
## # … with 95 more rows, and abbreviated variable name ¹Alteracao_Pandemia
mutateFunção que permite criar/modificar variáveis.
# Criando a variável IMC
sub_dados = dados %>% mutate(IMC=Peso/Altura^2)
sub_dados
## # A tibble: 2,210 × 9
## Genero Idade Regiao Isolamento_…¹ Renda…² Alter…³ Peso Altura IMC
## <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 Masculino 38 Sul Não entre … Não 99 1.7 34.3
## 2 Masculino 28 Sudeste Sim mais d… Sim 95.6 1.95 25.1
## 3 Feminino 24 Sudeste Não até R$… Sim 91 1.71 31.1
## 4 Feminino 26 Norte Não até R$… Sim 90.5 1.68 32.1
## 5 Feminino 56 Sudeste Não entre … Não 87.8 1.68 31.1
## 6 Masculino 22 Centro-oeste Não entre … Não 86.2 1.85 25.2
## 7 Feminino 43 Centro-oeste Sim entre … Não 85 1.67 30.5
## 8 Feminino 69 Sudeste Sim entre … Não 83.2 1.7 28.8
## 9 Feminino 34 Norte Não entre … Sim 80.9 1.59 32.0
## 10 Feminino 29 Centro-oeste Sim entre … Sim 80.6 1.68 28.6
## # … with 2,200 more rows, and abbreviated variable names ¹Isolamento_Social,
## # ²Renda_familiar, ³Alteracao_Pandemia
transmuteFunção que permite criar/modificar variáveis, mas devolve apenas as variáveis criadas/modificadas.
# Criando a variável IMC
sub_dados = dados %>% transmute(IMC=Peso/Altura^2)
sub_dados
## # A tibble: 2,210 × 1
## IMC
## <dbl>
## 1 34.3
## 2 25.1
## 3 31.1
## 4 32.1
## 5 31.1
## 6 25.2
## 7 30.5
## 8 28.8
## 9 32.0
## 10 28.6
## # … with 2,200 more rows
Suponha que eu esteja interessado em uma base de dados em que sejam estudadas apenas as mulheres com mais de 40 anos. Adicionalmente, preciso do IMC delas. Para fechar, é de interesse o estudo apenas das variáveis Alteracao_Pandemia, IMC e Idade
Nesse caso, podemos combinar diversas funções do
dplyr com o pipe %>%:
# Combinando funções
sub_dados = dados %>% filter(Genero == "Feminino" & Idade > 40) %>%
mutate(IMC = Peso/Altura^2) %>%
select(Alteracao_Pandemia, IMC, Idade)
sub_dados
## # A tibble: 481 × 3
## Alteracao_Pandemia IMC Idade
## <chr> <dbl> <dbl>
## 1 Não 31.1 56
## 2 Não 30.5 43
## 3 Não 28.8 69
## 4 Sim 31.2 63
## 5 Sim 29.1 48
## 6 Sim 25.6 51
## 7 Não 27.0 73
## 8 Sim 24.3 56
## 9 Não 20.8 47
## 10 Sim 41.5 48
## # … with 471 more rows
Considere a base de dados de uma pesquisa com alunos dos cursos de matemática do ensino médio. Ele contém muitas informações sociais, de gênero e de estudo interessantes sobre os alunos. As variáveis observadas foram:
1- Leia a base de dados e guarde em um objeto chamado
DadosA
2- Execute o código DadosA<-DadosA%>%arrange(age)
e examine o objeto DadosA. O que aconteceu?
3- Execute o código
DadosA<-DadosA%>%arrange(desc(age)) e examine o
objeto DadosA. O que aconteceu?
4- Exercite os comandos do dplyr:
DadosA1DadosA2DadosA3DadosA4DadosA5DadosA6DadosA75- Crie uma sequência de comandos para que, a partir do objeto
DadosA, filtre os estudantes que possuem um consumo muito alto de álcool
tanto diariamente como apenas no fim de semana, Crie a variável GF, que
é equivalente a \(G1*0.6\) + \(G2*0.4\) e selecione as variáveis school,
sex, study_time, age, romantic e GF. Guarde os dados finais em um objeto
chamado DadosF.