GET00130 - Métodos Computacionais para Estatística II
Conteúdo da aula
- Tidyverse;
- Pipe;
- Importando arquivos (.txt, .csv, .xlsx, .sav, .sas, etc);
- Exportando arquivos;
- Arquivos RDS.
Tidyverse
Nós (estatísticos/cientista de dados) precisamos falar sobre o tidyverse!
O tidyverse é um conjunto de pacotes do R que auxiliam o estatístico/cientista de dados na execução de diversas tarefas corriqueiras de forma eficiente e unificada. Vamos inicialmente pensar em eficiência no sentido da velocidade de solucionar o problema e não da velocidade de execução de algoritmos. Os pacotes pertencentes a este universo compartilham de uma filosofia, gramática e estrutura de dados, o que permite uma maior integração entre eles.
Se você é novo no tidyverse, o melhor lugar para você aprender a filosofia completa e como tudo se encaixa é o livro R for data science de autoria do Garret Grolemund e do Haddley Wickham.
O tidyverse é considerado um “universo” a parte do R, principalmente porque todas suas ferramentas possuem formas de uso consistentes e funcionam muito bem em conjunto.
Os princípios do tidyverse são:
1 - Eficiência algorítmica vs eficiência de trabalho.
Estamos dizendo que o tempo que o estatísco/cientista de dados gasta pensando em como realizar uma operação é mais importante do que o tempo que o computador gasta para realizar um cálculo.
2 - Tidy data.
É um princípio para arrumação da base de dados que resolve, usualmente, mais de 80% dos problemas reais. O objetivo na arrumação dos dados é extrair e transformar uma base de dados até que ela esteja em formato tidy. Uma base de dados é considerada “tidy” se cada observação é uma linha da base, cada variável é uma coluna da base e cada dado está numa célula da base.
3 - Utilização do operador |> (pipe)
Operador que revolucionou/facilitou a lógica de programar no R.
4 - Aparato mnemônico.
Pacotes baseados em teoria e API consistentes.
5 - Minimalidade e funções puras.
Funções sem efeitos colaterais. Interagem com o mundo por meio de inputs e outputs. Encaixa perfeitamente com o princípio do pipe.
6 - workflow para ciência de dados
1 - Pipe (Ctrl + Shift + m)
Pipes são ferramentas extremamente poderosas para clarear (decodificar) uma sequência de múltiplas operações.
Podemos apontar o operador pipe como uma das grandes revoluções dos último tempos no R, pois torna a leitura de uma sequência de códigos muito mais lógica, fácil e compreensível.
O |> é um operador nativo do R, que encontraremos disponível a partir da versão 4.1.
Basicamente, o operador |> usa o resultado do seu lado esquerdo como primeiro argumento da função do lado direito. Só isso!!!
No código abaixo, para termos acesso ao |> vamos carregar o pacote tidyverse (que carrega diversos pacotes).
#Criando um vetor x
x = c(2, 5, 7, 1, 8, 3)
#Calculando a média dos elementos de x com 2 casas decimais
x |>
mean() |>
round(digits = 2)[1] 4.33
Com o código descrito acima, enviamos o objeto x como o primeiro argumento da função mean e, em seguida, enviamos o resultado da expressão mean(x) como o primeiro argumento da função round, que diferentemente da função mean, necessita de dois argumentos, o valor a ser arredondado e o número de casas decimais, no caso digits = 2.
Mas qual foi o ganho? Se escrevermos os comandos na forma usual temos:
#Calculando a media de x com 2 casas decimais na forma usual
round(x = mean(x), digits = 2)[1] 4.33
Aparentemente, o ganho não foi grande. Agora pense que precisamos executar 10 funções aninhadas! O uso do |> vai permitir transformar um código confuso e difícil em algo simples e intuitivo.
Retiramos o exemplo abaixo do site curso-r, e ele se refere a seguinte situação problema: “vamos imaginar que precisamos escrever uma receita de um bolo usando o R, e cada passo da receita é uma função”:
#Receita do bolo
esfrie(asse(coloque(bata(acrescente(recipiente(rep("farinha", 2), "água", "fermento", "leite", "óleo"), "farinha", ate = "macio"), duracao = "3min"), lugar = "forma", tipo = "grande", untada = TRUE), duracao = "50min"), "geladeira", "20min")Entenderam????? Imaginamos que não!
|> no código:
#Receita do bolo com |>
recipiente(rep("farinha", 2), "água", "fermento", "leite", "óleo") |>
acrescente("farinha", ate = "macio") |>
bata(duracao = "3min") |>
coloque(lugar = "forma", tipo = "grande", untada = T) |>
asse(duracao = "50min") |>
esfrie("geladeira", "20min")Agora o código realmente parece uma receita de bolo, certo?
Já estão apaixonados pelo tidyverse?
Para você ativar o atalho Ctrl + Shift + m no Windows ou Cmd + Shift + m no Mac, precisamos ativar esta opção. Basta irmos em Tools > Global Options > Code e ativar a caixa como especificado abaixo (é preciso ter uma versão igual ou superior a 4.1 do R):
Aqueles que forem usuários do %>% do pacote magrittr, puderam perceber que existe grande semelhança entre o operador pipe nativo da linguagem com o pipe do pacote. Existem sim, algumas diferenças que não são tão importantes neste momento. Para aqueles que estiverem conhecendo o operador pipe pela primeira vez, sugiro fortemente o uso do pipe nativo |>.
2 - Importando dados para o R
O primeiro passo para importarmos um arquivo para o R é fazer com que o mesmo “enxergue” a sua pasta de trabalho.
Como perguntar qual a pasta que o R está “enxergando” no momento?
#Descobrindo qual a pasta de trabalho que o R está "enxergando" neste momento
getwd()Caso não seja a pasta onde localiza-se o seu arquivo, podemos mudar essa pasta com a função setwd.
#Modificando a pasta de trabalho que o R está "enxergando" neste momento
setwd("PASSAR AQUI O CAMINHO DA SUA PASTA SEMPRE ENTRE ASPAS")O caminho deve estar SEMPRE entre aspas e as barras devem ser invertidas (caso deseje usar a barra sem ser invertida é preciso duplicá-las).
A seguir serão apresentados alguns pacotes para a importação de dados para o R.
2.1 - Pacote readr
Um pacote cujo objetivo é propiciar de modo rápido e amigável a importação de dados retangulares (como .txt, .csv, .tsv, .fwd).
As principais funções deste pacote para importação de dados são:
read_table2- importa arquivos em que as colunas são separadas por espaços em branco. É equivalente a read.table, permite qualquer número de espaços entre colunas.read_table- é similar a read_table2, porém é mais rigorosa, cada linha deve ter o mesmo cumprimento e cada campo está na mesma posição em todas as linhas.read_csv- importa aquivos delimitados por vírgula.read_csv2- importa arquivos separados por semicolunas (comum em países que usam a “,” como separador decimal)read_tsv- importa arquivos separados por tabs.read_delim- importa arquivos com larguras fixas.
A seguir, vamos apresentar os principais argumentos da função read_delim:
- file - o arquivo a ser importado;
- delim - o caracter usado para separar as variáveis;
- col_names - um argumento lógico indicando se o arquivo possui ou não os nomes das variáveis (default = TRUE);
- na - qual a codificação usada para dado faltante (default = NA);
- skip - número de linhas a serem puladas no momento da importação (default = 0);
- locale - controla vários aspectos como decimal, enconding, entre outros.
Após especificarmos a pasta de trabalho, basta utilizarmos a função read_delim como a seguir.
#Importando o arquivo Base saude.txt e guardando no objeto base_saude
base_saude = read_delim(file = "Base saude.txt")Rows: 200 Columns: 10
── Column specification ────────────────────────────────────────────────────────
Delimiter: "\t"
chr (2): Codigo, Datacol
dbl (6): Sexo, Idade, HIV, Escol, DST, Tipo
ℹ 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.
#Visualizando o objeto base_saude
base_saude# A tibble: 200 × 10
Codigo Datacol Sexo Idade Peso Estatura HIV Escol DST Tipo
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AB01 14/10/15 1 20 612 16 1 3 1 2
2 AB02 09/02/16 0 30 60 155 0 5 0 9
3 AB03 01/03/10 0 50 80 183 1 2 1 3
4 AB04 04/05/13 0 43 83 19 1 9 1 2
5 AB05 20/05/14 0 22 753 175 0 2 1 3
6 AB06 30/01/11 1 15 702 17 1 6 0 9
7 AB07 05/08/15 1 22 60 165 1 5 1 3
8 AB08 08/12/13 1 25 62 155 0 1 0 2
9 AB09 03/11/10 1 32 61 162 1 4 1 1
10 AB10 10/10/10 1 33 55 155 1 5 1 9
# … with 190 more rows
Ao usarmos as funções do pacote readr para importarmos arquivo, a primeira coisa que percebemos é que são apresentadas a forma como cada variável foi coletada. Ao pedirmos para visualizarmos o objeto, percebemos que ele é um tibble.
A importação foi realizada de maneira correta?
Avaliem a variável Peso e Estatura no arquivo original. O que tem de diferente dos valores apresentados na tela do R?
Suponham que o responsável pela digitação dos dados nos informou que ele utilizou o código 9 como dado faltante para todas as variáveis.
Isso significa que precisamos modificar alguns argumentos da função para que a mesma possa realizar a importação de forma adequada, considerando o 9 como dado faltante e a “,” como decimal.
#Visualizando os argumentos da função locale
args(locale)function (date_names = "en", date_format = "%AD", time_format = "%AT",
decimal_mark = ".", grouping_mark = ",", tz = "UTC", encoding = "UTF-8",
asciify = FALSE)
NULL
#Importando o arquivo Base saude.txt
base_saude = read_delim(file = "Base saude.txt",
na = "9",
locale = locale(decimal_mark = ","))Rows: 200 Columns: 10
── Column specification ────────────────────────────────────────────────────────
Delimiter: "\t"
chr (2): Codigo, Datacol
dbl (8): Sexo, Idade, Peso, Estatura, HIV, Escol, DST, Tipo
ℹ 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.
#Visualizando o objeto base_saude
base_saude# A tibble: 200 × 10
Codigo Datacol Sexo Idade Peso Estatura HIV Escol DST Tipo
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AB01 14/10/15 1 20 61.2 1.6 1 3 1 2
2 AB02 09/02/16 0 30 60 1.55 0 5 0 NA
3 AB03 01/03/10 0 50 80 1.83 1 2 1 3
4 AB04 04/05/13 0 43 83 1.9 1 NA 1 2
5 AB05 20/05/14 0 22 75.3 1.75 0 2 1 3
6 AB06 30/01/11 1 15 70.2 1.7 1 6 0 NA
7 AB07 05/08/15 1 22 60 1.65 1 5 1 3
8 AB08 08/12/13 1 25 62 1.55 0 1 0 2
9 AB09 03/11/10 1 32 61 1.62 1 4 1 1
10 AB10 10/10/10 1 33 55 1.55 1 5 1 NA
# … with 190 more rows
#Obtendo medidas descritivas de todas as variáveis
summary(base_saude) Codigo Datacol Sexo Idade
Length:200 Length:200 Min. :0.00 Min. :15.00
Class :character Class :character 1st Qu.:0.00 1st Qu.:22.00
Mode :character Mode :character Median :1.00 Median :25.00
Mean :0.55 Mean :29.75
3rd Qu.:1.00 3rd Qu.:32.25
Max. :1.00 Max. :60.00
Peso Estatura HIV Escol
Min. :50.00 Min. :1.500 Min. :0.0000 Min. :0.000
1st Qu.:61.00 1st Qu.:1.600 1st Qu.:0.0000 1st Qu.:1.750
Median :65.00 Median :1.650 Median :1.0000 Median :3.000
Mean :67.36 Mean :1.667 Mean :0.6768 Mean :3.228
3rd Qu.:72.00 3rd Qu.:1.700 3rd Qu.:1.0000 3rd Qu.:5.000
Max. :83.00 Max. :1.900 Max. :1.0000 Max. :6.000
NA's :2 NA's :20
DST Tipo
Min. :0.0000 Min. :1.000
1st Qu.:0.0000 1st Qu.:1.000
Median :1.0000 Median :2.000
Mean :0.5969 Mean :2.034
3rd Qu.:1.0000 3rd Qu.:3.000
Max. :1.0000 Max. :3.000
NA's :4 NA's :82
- Qual o problema das medidas resumos apresentadas acima?
- Avalie o arquivo Dicionário Base saude.
- Percebemos que o r está tratando várias variáveis que são qualitativas como variáveis numéricas, pois tem calculado medidas resumos como média e quartis.
- É preciso trasformar as variáveis em fatores, vamos fazer esta transformação seguindo o dicionário?
#Transformando a variável Sexo em um factor
base_saude$Sexo = factor(x = base_saude$Sexo,
labels = c("Feminino","Masculino"))
#Transformando a variável HIV em um factor
base_saude$HIV = factor(x = base_saude$HIV,
labels = c("Não","Sim"))
#Transformando a variável Escolaridade em um ordered
base_saude$Escol = ordered(x = base_saude$Escol,
levels = c(0,1,2,3,4,5),
labels = c("Analfabeto","Fundamental Incompleto","Fundamental Completo","Medio Incompleto", "Medio Completo","Superior"))
#Transformando a variável DST em um factor
base_saude$DST = factor(x = base_saude$DST,
labels = c("Não","Sim"))
#Transformando a variável Tipo de DST em um factor
base_saude$Tipo = factor(x = base_saude$Tipo,
labels = c("Sifilis","Hepatite","Outros"))
#Transformando a variável Codigo em um fator
base_saude$Codigo = factor(x = base_saude$Codigo)
#Visualizando a base tratada
base_saude# A tibble: 200 x 10
Codigo Datacol Sexo Idade Peso Estatura HIV Escol DST Tipo
<fct> <chr> <fct> <dbl> <dbl> <dbl> <fct> <ord> <fct> <fct>
1 AB01 14/10/15 Mascul… 20 61.2 1.6 Sim Medio Incomp… Sim Hepat…
2 AB02 09/02/16 Femini… 30 60 1.55 Não Superior Não <NA>
3 AB03 01/03/10 Femini… 50 80 1.83 Sim Fundamental … Sim Outros
4 AB04 04/05/13 Femini… 43 83 1.9 Sim <NA> Sim Hepat…
5 AB05 20/05/14 Femini… 22 75.3 1.75 Não Fundamental … Sim Outros
6 AB06 30/01/11 Mascul… 15 70.2 1.7 Sim <NA> Não <NA>
7 AB07 05/08/15 Mascul… 22 60 1.65 Sim Superior Sim Outros
8 AB08 08/12/13 Mascul… 25 62 1.55 Não Fundamental … Não Hepat…
9 AB09 03/11/10 Mascul… 32 61 1.62 Sim Medio Comple… Sim Sifil…
10 AB10 10/10/10 Mascul… 33 55 1.55 Sim Superior Sim <NA>
# … with 190 more rows
#Calculando medidas descritivas
summary(base_saude) Codigo Datacol Sexo Idade
AB01 : 1 Length:200 Feminino : 90 Min. :15.00
AB02 : 1 Class :character Masculino:110 1st Qu.:22.00
AB03 : 1 Mode :character Median :25.00
AB04 : 1 Mean :29.75
AB05 : 1 3rd Qu.:32.25
AB06 : 1 Max. :60.00
(Other):194
Peso Estatura HIV Escol
Min. :50.00 Min. :1.500 Não : 64 Analfabeto :13
1st Qu.:61.00 1st Qu.:1.600 Sim :134 Fundamental Incompleto:32
Median :65.00 Median :1.650 NA's: 2 Fundamental Completo :34
Mean :67.36 Mean :1.667 Medio Incompleto :13
3rd Qu.:72.00 3rd Qu.:1.700 Medio Completo :30
Max. :83.00 Max. :1.900 Superior :26
NA's :52
DST Tipo
Não : 79 Sifilis :35
Sim :117 Hepatite:44
NA's: 4 Outros :39
NA's :82
- Percebam que ainda falta realizar um tratamento adequado para a variável Datacol, mas só iremos discutir este tratamento quando falarmos do pacote
lubridate.
Algumas funções do pacote readr permitem que definamos o tipo da variável na sua importação. Vejam que na importação anterior, a função definiu de acordo com uma avaliação dos valores que a variável assumir. Suponha que o nosso interesse seja que a variável Sexo seja um character que assume os valores 0 e 1. Podemos fazer essa definição na importação da base usando o argumento col_types.
#Importando o arquivo Base saude.txt
base_saude2 = read_delim(file = "Base saude.txt",
na = "9",
locale = locale(decimal_mark = ","),
col_types = cols(Sexo = col_character()))
#Visualizando o objeto base_saude2
base_saude2# A tibble: 200 × 10
Codigo Datacol Sexo Idade Peso Estatura HIV Escol DST Tipo
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AB01 14/10/15 1 20 61.2 1.6 1 3 1 2
2 AB02 09/02/16 0 30 60 1.55 0 5 0 NA
3 AB03 01/03/10 0 50 80 1.83 1 2 1 3
4 AB04 04/05/13 0 43 83 1.9 1 NA 1 2
5 AB05 20/05/14 0 22 75.3 1.75 0 2 1 3
6 AB06 30/01/11 1 15 70.2 1.7 1 6 0 NA
7 AB07 05/08/15 1 22 60 1.65 1 5 1 3
8 AB08 08/12/13 1 25 62 1.55 0 1 0 2
9 AB09 03/11/10 1 32 61 1.62 1 4 1 1
10 AB10 10/10/10 1 33 55 1.55 1 5 1 NA
# … with 190 more rows
Atividade: Agora importem o arquivo Base saude modificada.txt (avaliem as características que o objeto possui e assuma que o 9 é o código de dado faltante) e guardem em um objeto chamado base_saude3.
#Visualizando o objeto base_saude3
base_saude3# A tibble: 7 × 10
Codigo DaTaCole Sexo Idade Peso EsTaTura HIV Escol DST Tipo
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AB01 14/10/15 1 20 61.2 1.6 1 3 1 2
2 AB02 09/02/16 0 30 60 1.55 0 5 0 NA
3 AB03 01/03/10 0 50 80 1.83 1 2 1 3
4 AB04 04/05/13 0 43 83 1.9 1 NA 1 2
5 AB05 20/05/14 0 22 75.3 1.75 0 2 1 3
6 AB06 30/01/11 1 15 70.2 1.7 1 6 0 NA
7 AB07 05/08/15 1 22 60 1.65 1 5 1 3
Se o nosso interesse é importar arquivos com extensão .csv, podemos usar a função read_delim, mas existem opções melhores, pois não nos preocuparemos em definir o delimitador.
As funções read_csv e read_csv2 leem dados em arquivos .csv.
CSV (comma separeted values)
Principais argumentos da função read_csv2:
- file - o arquivo a ser importado;
- col_names - um argumento lógico indicando se o arquivo possui ou não os nomes das variáveis (default = TRUE);
- na - qual a codificação usada para dado faltante (default =c("", NA));
- skip - número de linhas a serem puladas no momento da importação (default = 0);
- locale - controla vários aspectos como decimal, enconding, entre outros.
#Fazendo a leitura do arquivo Base saude.csv
base_saude4 = read_csv2(file = "Base saude.csv")ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
Rows: 200 Columns: 10
── Column specification ────────────────────────────────────────────────────────
Delimiter: ";"
chr (2): Codigo, Datacol
dbl (8): Sexo, Idade, Peso, Estatura, HIV, Escol, DST, Tipo
ℹ 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.
base_saude4# A tibble: 200 × 10
Codigo Datacol Sexo Idade Peso Estatura HIV Escol DST Tipo
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AB01 14/10/15 1 20 61.2 1.6 1 3 1 2
2 AB02 09/02/16 0 30 60 1.55 0 5 0 9
3 AB03 01/03/10 0 50 80 1.83 1 2 1 3
4 AB04 04/05/13 0 43 83 1.9 1 9 1 2
5 AB05 20/05/14 0 22 75.3 1.75 0 2 1 3
6 AB06 30/01/11 1 15 70.2 1.7 1 6 0 9
7 AB07 05/08/15 1 22 60 1.65 1 5 1 3
8 AB08 08/12/13 1 25 62 1.55 0 1 0 2
9 AB09 03/11/10 1 32 61 1.62 1 4 1 1
10 AB10 10/10/10 1 33 55 1.55 1 5 1 9
# … with 190 more rows
As diferenças entre as duas funções para importação de arquivos .csv são o separador e o decimal. Quando forem importar um arquivo de extensão .csv, testem uma das funções e caso a exportação não esteja ocorrendo de forma correta, tente a outra função.
2.2 - Pacote readxl
A função read_excel importa dados em arquivos .xls e .xlsx.
Principais argumentos da função read_excel:
- path - o arquivo a ser importado;
- sheet - a planilha a ser importada;
- col_names - um argumento lógico indicando se o arquivo possui ou não os nomes das variáveis (default = TRUE);
- skip - número de linhas a serem puladas no momento da importação (default = 0);
- na - qual a codificação usada para dado faltante (default = NA).
# Carregando o pacote readxl
library(readxl)
#Fazendo a leitura do arquivo Base saude.xlsx
base_saude5 = read_excel(path = "Base saude.xlsx",
sheet = 1)
base_saude5# A tibble: 200 × 10
Codigo Datacol Sexo Idade Peso Estatura HIV Escol DST Tipo
<chr> <dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AB01 2015-10-14 00:00:00 1 20 61.2 1.6 1 3 1 2
2 AB02 2016-02-09 00:00:00 0 30 60 1.55 0 5 0 9
3 AB03 2010-03-01 00:00:00 0 50 80 1.83 1 2 1 3
4 AB04 2013-05-04 00:00:00 0 43 83 1.9 1 9 1 2
5 AB05 2014-05-20 00:00:00 0 22 75.3 1.75 0 2 1 3
6 AB06 2011-01-30 00:00:00 1 15 70.2 1.7 1 6 0 9
7 AB07 2015-08-05 00:00:00 1 22 60 1.65 1 5 1 3
8 AB08 2013-12-08 00:00:00 1 25 62 1.55 0 1 0 2
9 AB09 2010-11-03 00:00:00 1 32 61 1.62 1 4 1 1
10 AB10 2010-10-10 00:00:00 1 33 55 1.55 1 5 1 9
# … with 190 more rows
2.3 - Pacote haven
É possível ler dados diretamente de outros formatos que não seja texto (ASCII). Isto em geral é mais eficiente e requer menos memória do que converter para formato texto. Há funções para importar dados diretamente do SAS, SPSS e Stata.
A seguir serão listadas algumas destas funções
read_savpara arquivos do SPSS;read_statapara arquivos do Stata;read_saspara arquivos do SAS;
# Carregando o pacote haven
library(haven)
#Fazendo a leitura de um arquivo do SPSS
base_spss = read_sav(file = "Dados.sav")
#Visualizando o arquivo base_spss
base_spss# A tibble: 35 × 2
Genero Nota
<dbl+lbl> <dbl>
1 1 [Masculino] 6
2 2 [Feminino] 8
3 2 [Feminino] 7
4 2 [Feminino] 7
5 2 [Feminino] 8
6 2 [Feminino] 8
7 2 [Feminino] 8
8 2 [Feminino] 8
9 2 [Feminino] 6
10 2 [Feminino] 5
# … with 25 more rows
#Visualizando a variável Genero
base_spss$Genero<labelled<double>[35]>: Genero dos pacientes
[1] 1 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 2 2 2
Labels:
value label
1 Masculino
2 Feminino
3 - Exportando dados do R
Após realizar modificações na base de dados, podemos salvar a base modificada no disco rígido do computador. Para isso, temos diversas opções de função, dependendo da extensão que desejarmos que o nosso arquivo tenha:
Principais argumentos da família de funções write_:
- x - o arquivo a ser exportado;
- path - nome com o qual o arquivo será salvo (não esquecer a extensão .xxx);
#Exportando o arquivo em .csv
write_excel_csv2(x = base_saude,
file = "Base saude alterada.csv")
#Exportando o arquivo em .txt
write_delim(x = base_saude,
file = "Base modificada.txt")
#Exportando o arquivo em .sav
write_sav(data = base_saude,
path = "Base modificada.sav")4 - Extensão RDS
Atividade: Importem o arquivo Escolhas.csv e salvem em um arquivo chamado base_escolha!
#Visualizando a base Escolha
base_escolha# A tibble: 352,020 × 7
CODIGO NU_SEQ_ESCOLHA DS_ESCOLHA CO_COMPONENTE CO_OPCAO_1 CO_OPCAO_2
<chr> <dbl> <dbl> <dbl> <chr> <chr>
1 21006458 181 1 4 25205COL04 25205COL04
2 21006458 181 1 6 25207COL06 25207COL06
3 21006458 181 1 5 25206COL05 25206COL05
4 21006458 181 1 17 32183L1729 32183L1729
5 29301076 181 1 38 25229COL38 25229COL38
6 29301076 181 1 32 25225COL32 25225COL32
7 29301076 181 1 1 25230COL01 25230COL01
8 29301076 181 1 2 25231COL02 25231COL02
9 29301076 181 1 4 25396COL04 25396COL04
10 29301076 181 1 6 25309COL06 25309COL06
# … with 352,010 more rows, and 1 more variable: CO_OPCAO_3 <chr>
Ao salvarmos o arquivo como uma extensão .rds, ele cria uma versão serializada do conjunto de dados e, em seguida, salva-o com uma compressão, o que diminui o tamanho e o tempo necessário para a leitura do mesmo.
Principais argumentos da função write_rds:
- x - o arquivo a ser exportado;
- path - nome com o qual o arquivo será salvo (não esquecer a extensão .rds);
- compress - escolher o tipo de compressão a ser aplicada (default = none);
#Salvando a base Escolhas
write_rds(x = base_escolha,
file = "Escolhas.rds",
compress = "gz")
#Importando um arquivo .rds
base.rds = read_rds(file = "Escolhas.rds")
base.rds# A tibble: 352,020 × 7
CODIGO NU_SEQ_ESCOLHA DS_ESCOLHA CO_COMPONENTE CO_OPCAO_1 CO_OPCAO_2
<chr> <dbl> <dbl> <dbl> <chr> <chr>
1 21006458 181 1 4 25205COL04 25205COL04
2 21006458 181 1 6 25207COL06 25207COL06
3 21006458 181 1 5 25206COL05 25206COL05
4 21006458 181 1 17 32183L1729 32183L1729
5 29301076 181 1 38 25229COL38 25229COL38
6 29301076 181 1 32 25225COL32 25225COL32
7 29301076 181 1 1 25230COL01 25230COL01
8 29301076 181 1 2 25231COL02 25231COL02
9 29301076 181 1 4 25396COL04 25396COL04
10 29301076 181 1 6 25309COL06 25309COL06
# … with 352,010 more rows, and 1 more variable: CO_OPCAO_3 <chr>